Transformando arquivos ODS ou XLS para PDF
Esse artigo necessita que o Calc do OpenOffice.org esteja instalando, estou utilizando a versão 2.2 nesse artigo, para fazer o download do OpenOffice.org acesse esse endereço: http://www.openoffice.org
Esse script funciona graças as APIs que o OpenOffice.org possui e esse exemplo funciona apenas em servidores Windows.
Vamos fazer a coisa acontecer, crie um arquivo chamado: xls2pdf.class.php , esse será o arquivo da classe, que realizará toda transformação do arquivo em pdf, adicione o seguinte conteúdo ao arquivo:
Acabamos de montar o arquivo da classe, agora precisamos criar um arquivo que irá definir o nome do arquivo template, o diretório dos arquivos e o nome do arquivo pdf que você deseja que seja gerado.
Esse script funciona graças as APIs que o OpenOffice.org possui e esse exemplo funciona apenas em servidores Windows.
Vamos fazer a coisa acontecer, crie um arquivo chamado: xls2pdf.class.php , esse será o arquivo da classe, que realizará toda transformação do arquivo em pdf, adicione o seguinte conteúdo ao arquivo:
<?php class Xls2Pdf { // Atributos. private $template_file; private $xls_file_tmp; private $xls_tmp; private $pdf_file_name; private $dir_files; private $value_col_row; // Métodos sets e gets. function setTemplateFile($template_file) { $this->template_file = $template_file; } function getTemplateFile() { return $this->template_file; } function setPdfFileName($pdf_file_name) { $this->pdf_file_name = $pdf_file_name; } function getPdfFileName() { return $this->pdf_file_name; } function setDirFiles($dir_files) { $this->dir_files = $dir_files; } function getDirFiles() { return $this->dir_files; } // Método construtor. function Xls2Pdf() { set_time_limit(0); } // 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 criação do arquivo pdf. function makePdf() { if (file_exists($this->getDirFiles() . $this->getTemplateFile())) { // Conecta com o OpenOffice.org $objServiceManager = new COM("com.sun.star.ServiceManager") or die("O OpenOffice.org não está instalado."); // Cria a instância para trabalhar com as API´s do OpenOffice.org $objDesktop = $objServiceManager->createInstance("com.sun.star.frame.Desktop"); // Carrega o OpenOffice.org na memória em modo invisível $args = array($this->makePropertyValue("Hidden", true, $objServiceManager)); // Carrega o arquivo de template para dentro OpenOffice.org $objDocument = $objDesktop->loadComponentFromURL("file:///" . $this->getDirFiles() . $this->getTemplateFile(), "_black", 0, $args); // Seleciona a primeira planilha do documento $activeSheet = $objDocument->getSheets->getByIndex(0); // Define o filtro calc_pdf_Export, esse filtro que converte o arquivo template em pdf $export_args = array( $this->makePropertyValue("FilterName", "calc_pdf_Export", $objServiceManager) ); // Define o local onde será gravado o arquivo pdf gerado no computador $objDocument->storeToURL("file:///" . $this->getDirFiles() . $this->getPdfFileName(), $export_args); // Descarrega o OpenOffice.org e fecha a conexão com as API´s $objDocument->dispose(); $objDocument->close(true); // Retorna um vetor com o nome do pdf, o diretório dos arquivos e o nome do template return array($this->getPdfFileName(), $this->getDirFiles(), $this->getTemplateFile()); } else { // Exibe uma mensagem de erro caso não exista o arquivo die("O arquivo de template especificado não existe."); } } } ?>
Acabamos de montar o arquivo da classe, agora precisamos criar um arquivo que irá definir o nome do arquivo template, o diretório dos arquivos e o nome do arquivo pdf que você deseja que seja gerado.
Páginas:
1
2
Novo Comentário: