Criar Web, manuais e recursos para desenvolvimento web
Manuais
Programas
FAQS
Diretório
Comunidade
  Inicio > Manuais > Workshop de PHP
SEÇÕES
Manuais relacionados
+Workshop de PHP
Categorias
+PHP
+Scripts em PHP

Índice do Manual Workshop de PHP
+ Gestão de ficheiros através de PHP
+ Upload de ficheiros com PHP
+ Verificar a existência de uma URL
+ Leitura sequencial de ficheiros com PHP
+ Escritura em ficheiros com PHP
+ Gestão de directórios com PHP
+ Função que escreve um campo select com valores de uma base de dados
+ Receber o último ID de uma inserção com PHP e MySQL
+ Recolher dados de um Select Multiple com PHP
+ Enviar e-mails pelo PHP
+ Validar um endereço email em PHP
+ Loop para receber todas as variáveis por POST em PHP
+ Enviar um formulário por mail com PHP
+ Paginação de resultados com PHP e MySQL
+ Usuários ativos com PHP
+ Listas de elementos com cores alternas em PHP
+ Programas de livre distribuição em PHP
+ phpMyAdmin
+ Formatação de uma cadeia
+ Cálculo dos dias de um mês em PHP
+ Contador simples para páginas PHP
+ Avaliações dos usuários em PHP
+ Rastrear os robôs de buscadores
+ Recomendar um site usando PHP
+ Criação de um log de erros
+ Comprimir página PHP
+ Contador PHP com imagens
+ Editor PHP Maguma Studio
+ SiteMaps de Google em PHP
+ Teste de velocidade de conexão à Internet
+ Mostrar Conteúdo de acordo com o país em PHP
+ Conteúdos em banco de dados com PHP
+ Problemas com as datas em timestamp Unix de PHP
+ Contar o número de linhas e caracteres em arquivo PHP
+ Transformação Doc, Odt ou Rtf para PDF
+ Preencher um arquivo RTF e gerar o PDF
+ Converter arquivos ods ou xls para pdf
+ PHP isam, ferramenta Web para Arquivos Planos
+ Undefined variable ou Undefined index
+ Agregar carinhas ao sistema
+ Paginator, script para paginação com PHP e MySQL
+ Executar scripts PHP automaticamente através do cron com CURL
+ Uso do FTP com PHP
+ Instalação de One or Zero PHP Helpdesk
+ Portal PHP Nuke
+ Gerando feed RSS de notícias em PHP
+ Blasten blt-SEARCH 1.0.5
+ Classes e Objetos em PHP
+ Recuperando a qualidade de uma imagem JPEG
+ Comprovar se existe o domínio do correio
+ Tutorial de BBCode
+ Função em PHP para o cálculo de minutos transcorridos em duas horas dadas
+ Criação de gráficos em PHP com JpGraph
+ Gerar documentos de Word RTF com PHP
+ Introdução ao Symfony
+ Arredondar decimais em PHP
+ Envio de boletins a e-mails de um banco de dados MySQL
+ Htaccess e páginas dinâmicas
+ Criando imagens com PHP
+ Programar um buscador com PHP e MySQL
+ Loop para receber todos os dados de uma fila de um recordset com PHP
+ Criação de BBcode em PHP

Descrição dos capítulos

Parceiros
- CSS para Web Design
- S.O.S Designers
- Slackware-Brasil
- Crie seu Web site
- Oficina da Net


Transformação Doc, Odt ou Rtf para PDF

Uma necessidade que está surgindo é a criação de arquivos doc, odt ou rtf para pdf. Veremos como faze-lo.


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: 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 gerar 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.

Espero que possa ter ajudado.

Autoria e outras referências sobre este artigo

Manuais relacionados com este artigo
Dentro de Workshop de PHP

Categorias relacionadas
Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo:
+ Entrar em PHP
+ Entrar em Scripts em PHP


Comentários dos visitantes
Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
Acrescentar um comentário do artigo Acrescentar um comentário do artigo



Sobre nós | Copyright | Anuncie | Entrar em contato <criarweb>

Hospedado por Hostnet Hospedagem de Sites