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: