+1

Transformando documentos DOC, ODT ou RTF para PDF

criado por Patrick Espake em 04/06/2007 7:37pm
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: patrickespake@gmail.com ******************************/
/****************************************************************/

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;
       
}
}
?>

Comentários:

Mostrando 1 - 6 de 6 comentários
Raimundo Luiz disse:
alguem pode me dizer prq, na minha aplicação ta dando "O arquivo de template especificado não existe."
30/11/2010 1:37pm (~14 anos atrás)

king m disse:
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `com.sun.star.ServiceManager': A execução no servidor falhou ' in C:\apache2triad\htdocs\doc2pdf.class.php:72 Stack trace: #0 C:\apache2triad\htdocs\doc2pdf.class.php(72): com->com('com.sun.star.Se...') #1 C:\apache2triad\htdocs\doc2pdf.class.php(49): Doc2Pdf->word2pdf() #2 C:\apache2triad\htdocs\criar_pdf.php(19): Doc2Pdf->makePdf() #3 {main} thrown in C:\apache2triad\htdocs\doc2pdf.class.php on line 72


boas esta me dando este erro alguem me podia ajudar.....
09/11/2007 8:28am (~17 anos atrás)

Octávio disse:
Muito bom o artigo.
Por acaso encontrou como resolver a questão no Linux?
20/07/2007 7:01am (~18 anos atrás)

Patrick, esse artigo é ótimo e bom esplicativo, parabens, nos falamos na aula.
10/07/2007 12:14pm (~18 anos atrás)

testei aqui é deu tudo certo...
12/06/2007 10:57pm (~18 anos atrás)

nothing disse:
Ótimo artigo... parabéns !!!
08/06/2007 11:12am (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)