Login: Senha: Registrar-se - Esqueci minha senha
.: Menu
Home
Artigos
Sign. dos Sonhos
Papel de Parede
Ilusões de Ótica
.: Bancos
Emoticons e Gifs
Ícones
Logos
.: Serviços
Mural de Recados
Usuários Online
Bloco de Notas
Formmail
Meu IP
.: Geradores
Gerador de Senhas
Barra de Rolagem
Recomende
Pop-up
Inverter Link
.: Canais
Apostilas
Arte/Cultura
Blog
Busca
Celular
Downloads
E-mail Grátis
Emoticons
Esportes
Filmes
Flogs
Fontes
GTA Mods
Host Grátis
Humor
Infantil
Informática
Jogos
Jogos Online
Linux
Músicas
Notícias
Offline
Redirecionadores
Sites Parceiros
Webdesigners
Webmasters
.: Na Faixa
Sobre
Contato
Recomende-nos
Termos de uso

Transformação Doc, Odt ou Rtf para PDF

Enviado em 02/09/2007 - 11:04
Fonte: A A A A

Uma necessidade que está surgindo é a criação de arquivos doc, odt (formato de texto do Open Office - Writer) ou rtf para pdf. O Php não possui nenhuma engine que realiza essa transformação, desta forma é necessário usar alguns métodos para realizar essa tarefa.
O processo descrito aqui funciona para servidores Windows rodando o Apache e o PHP, até gostaria de pedir ajuda para transpor esse código para servidores Linux, mas no final do artigo conversamos mais a respeito do Linux.
------------------------------------------------------------------
INSTALANDO O OPENOFFICE.ORG
Como o PHP não possui engines para transformação de documentos de texto para pdf é necessário instalar o OpenOffice.org, pois através dele que iremos realizar a criação dos arquivos de texto em pdf. O primeiro passo é instalar o OpenOffice.org, para isso basta acessar: www.openoffice.org e fazer o download do Open Office, nesse artigo usei o Open Office versão 2.2. Após fazer o download do Open Office realize a sua instalação, se quiser basta instalar somente o Writer e o Calc (em um próximo artigo explicarei como converter arquivos xls ou ods para PDF).
--------------------------------------------------------------
CRIANDO A CLASSE DOC2PDF
Agora vamos criar um arquivo novo em PHP, esse arquivo será a nossa classe de criação de arquivos Doc, Odt ou Rtf para Pdf. Digite o texto o abaixo e salve o arquivo como: doc2pdf.class.php.
<?php
/****************************************************************/
/* CLASSE RESPONSÁVEL PELA CRIAÇÃO DE ARQUIVOS TEMPLATES EM PDF */
/* CRIADO POR: PATRICK ESPAKE ***********************************/
/* E-mail: [email protected] ******************************/
/****************************************************************/
class Doc2Pdf
{
// Atributos.
private $template_file;
private $doc_file;
private $pdf_file_name;
private $pdf_file;
private $dir_files;
// Métodos sets e gets.
function setTemplateFile($template_file) { $this->template_file = $template_file; }
function getTemplateFile() { return $this->template_file; }
function setDocFile($doc_file) { $this->doc_file = $doc_file; }
function getDocFile() { return $this->doc_file; }
function setPdfFileName($pdf_file_name) { $this->pdf_file_name = $pdf_file_name; }
function getPdfFileName() { return $this->pdf_file_name; }
function setPdfFile($pdf_file) { $this->pdf_file = $pdf_file; }
function getPdfFile() { return $this->pdf_file; }
function setDirFiles($dir_files) { $this->dir_files = $dir_files; }
function getDirFiles() { return $this->dir_files; }
// Método construtor.
function Doc2Pdf()
{
set_time_limit(0);
}
// Método de criação do arquivo pdf.
function makePdf()
{
if(file_exists($this->getDirFiles() . $this->getTemplateFile()))
{
$doc_file = "file:///" . $this->getDirFiles() . $this->getTemplateFile();
$pdf_file = "file:///" . $this->getDirFiles() . $this->getPdfFileName();
$this->setDocFile($doc_file);
$this->setPdfFile($pdf_file);
if($this->word2pdf())
return array($this->getPdfFileName(), $this->getDirFiles(), $this->getTemplateFile());
else
die("Não foi possível geral o arquivo pdf, tente novamente.");
}
else
die("O arquivo de template especificado não existe.");
}
// Método de criação das propriedades do OpenOffice.org
function makePropertyValue($name, $value, $osm)
{
$oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$oStruct->Name = $name;
$oStruct->Value = $value;
return $oStruct;
}
// Método de transformação do arquivo doc, odt ou rtf para arquivo pdf.
function word2pdf()
{
$doc_url = $this->getDocFile();
$output_url = $this->getPdfFile();
$osm = new COM("com.sun.star.ServiceManager") or die("O OpenOffice.org não está instalado.");
$args = array($this->makePropertyValue("Hidden", true, $osm));
$oDesktop = $osm->createInstance("com.sun.star.frame.Desktop");
$oWriterDoc = $oDesktop->loadComponentFromURL($doc_url, "_blank", 0, $args);
$export_args = array($this->makePropertyValue("FilterName", "writer_pdf_Export", $osm));
$oWriterDoc->storeToURL($output_url,$export_args);
$oWriterDoc->close(true);
return true;
}
}
?>
--------------------------------------------------------------
GERANDO O PDF
Agora vamos criar um arquivo PHP chamando criar_pdf.php, esse arquivo deverá ter o seguinte conteúdo:
<?php
// Inclui o arquivo da classe.
include("doc2pdf.class.php");
// Cria o objeto.
$doc2pdf = new Doc2Pdf();
// Nome do arquivo do doc, odt ou rtf.
$doc2pdf->setTemplateFile("meu_arquivo.doc");
// Nome do arquivo do pdf que será gerado.
$doc2pdf->setPdfFileName("meu_pdf.pdf");
// Diretório onde os arquivos estão localizados, é necessário usar o caminho completo.
$doc2pdf->setDirFiles("C:/apache/www/pdf/");
// Cria o arquivo pdf.
$doc2pdf->makePdf();
?>
Para gerar o pdf é só rodar o arquivo criar_pdf.php e o PDF será gerado na pasta definida no $doc2pdf->setDirFiles("C:/apache/www/pdf/"), no nosso caso na pasta C:\apache\www\pdf\.
A linha $doc2pdf->makePdf() retorna um array com as informações do nome do PDF, o diretório e o nome do arquivo de template. Essas informações podem ser usadas depois para redirecionar o browser para mostrar o PDF, após ser gerado.
Como foi comentado no começo desse artigo, esse código roda perfeitamente no ambiente Windows, no ambiente Linux não consegui descobrir uma solução, caso alguém saiba como fazer, favor avisar. Como a maioria dos servidores roda Linux, a solução em Linux vai ser bem mais interessante.
Escrito por:
Patrick Espake
e-mail: [email protected]

Fonte: www.php5.com.br

Enviado por: brunohcs

Esse artigo foi visualizado 1924 vezes

Compartilhe este artigo
facebook del.icio.us rec6 digg
Recomende este artigo a um amigo


Voltar
>> Comentários
 
Related Posts Plugin for WordPress, Blogger...
Comentar
Buscar Artigos:
.: Mods de GTA
GTA SA, VC, IV
SA - Carros
IV - Carros
Mods
GTA IV
SA - Mods Cleo
.: Saúde
Calculadora de IMC
Peso Ideal
Artigos de Saúde
.: Jogos Online
Ação
Aventura
Cassino
Classicos
Colorir
Corrida
Educativos
Esporte
Estrategia
Infantil
Luta
Meninas
Nave
Tiro
Outros
Adulto
Top Jogos
.: Parceiros
Mural de Recados Grátis
Papel de Parede
Show Moto
Web Visual
.: Nossos Números
Artigos: 930
Categorias: 50
Comentarios: 1863
Usuarios: 26634
Blocos de Nota: 87
Canais: 169

website monitoring service
eXTReMe Tracker
Na Faixa.net - Todos os direitos reservados. 12/2003 - 04/2024
Leia nossos Termos de Uso - Política de Privacidade
Desenvolvido por Web Visual
Crie seu Site - Papel de Parede Grátis - Show Moto - Mural de Recados Grátis - Dicas10