Gerando Documentos OpenOffice Dinamicamente
Agora já é possível entender a idéia geral do processo:
1. Criamos um arquivo OpenOffice como um template;
2. Descompactamos em uma pasta;
3. Modificamos alguns arquivos xml, principalmente o content.xml;
4. Recompactamos tudo;
5. Enviamos ao usuário com a extensão correta.
As primeiras duas etapas devem ser feitas manualmente, usando o OpenOffice como "gerador de templates". As duas últimas serão feitas por uma aplicação, em nosso caso utilizaremos o PHP, mas a qualquer outro tipo de linguagem poderia ser utilizada. A etapa três deve ser feita em parte modificando manualmente, em parte através do php.
A maneira mais simples de proceder é utilizando uma ferramenta de template. Há dezenas de ferramentas de template, as mais conhecidas são o Smarty para o PHP, o Cheetah para Python entre outras. Sem nenhuma perda de generalidade utilizaremos a SmartTemplate de Philipp v. Criegern, por ser simples e muito rápida. Não sendo um grande usuário de templates, acredito que os exemplos iniciais apontaram-me o Smarty como mais longo, e quanto mais modificarmos os arquivos originais, pior é manutenção dos relatórios. Entretanto essa convicção não está fundamentada em um conhecimento das ferramentas disponíveis.
Para a compactação utilizaremos uma versão modificada da ziplib.php que é parte do projeto Phpwiki.
Aqui vale um parênteses. Veremos que não há grandes necessidades de programação para começar a utilizar o método. Graças à filosofia Open Source, o trabalho pesado já foi feito por várias pessoas. Agora basta procurar e juntar as peças. Já foi dito que o futuro da programação tenderia mais a conectar um diagrama de blocos do que codificar. Bem, nessa caso é exatamente isso.
1. Criamos um arquivo OpenOffice como um template;
2. Descompactamos em uma pasta;
3. Modificamos alguns arquivos xml, principalmente o content.xml;
4. Recompactamos tudo;
5. Enviamos ao usuário com a extensão correta.
As primeiras duas etapas devem ser feitas manualmente, usando o OpenOffice como "gerador de templates". As duas últimas serão feitas por uma aplicação, em nosso caso utilizaremos o PHP, mas a qualquer outro tipo de linguagem poderia ser utilizada. A etapa três deve ser feita em parte modificando manualmente, em parte através do php.
A maneira mais simples de proceder é utilizando uma ferramenta de template. Há dezenas de ferramentas de template, as mais conhecidas são o Smarty para o PHP, o Cheetah para Python entre outras. Sem nenhuma perda de generalidade utilizaremos a SmartTemplate de Philipp v. Criegern, por ser simples e muito rápida. Não sendo um grande usuário de templates, acredito que os exemplos iniciais apontaram-me o Smarty como mais longo, e quanto mais modificarmos os arquivos originais, pior é manutenção dos relatórios. Entretanto essa convicção não está fundamentada em um conhecimento das ferramentas disponíveis.
Para a compactação utilizaremos uma versão modificada da ziplib.php que é parte do projeto Phpwiki.
Aqui vale um parênteses. Veremos que não há grandes necessidades de programação para começar a utilizar o método. Graças à filosofia Open Source, o trabalho pesado já foi feito por várias pessoas. Agora basta procurar e juntar as peças. Já foi dito que o futuro da programação tenderia mais a conectar um diagrama de blocos do que codificar. Bem, nessa caso é exatamente isso.
Pessoal,
Como é minha primeira publicação, acabei deixando html demais. O código estava ilegível...
Dei uma limpada nos códigos, que tinham html demais, que acabou não sendo interpretado. Acho que agora a terceira parte está mais clara.
[]'s
Giovanni
Como é minha primeira publicação, acabei deixando html demais. O código estava ilegível...
Dei uma limpada nos códigos, que tinham html demais, que acabou não sendo interpretado. Acho que agora a terceira parte está mais clara.
[]'s
Giovanni
26/01/2006 8:54am
(~19 anos atrás)
Obrigado, Paulo.
A documentação do PDF é importante para aplicações mais complexas, inclusie para contribuir com o próprio phpdocwiter, que eu não conhecia.
Valem duas ressalvas. Primeiro, a abordagem do projeto é de gerar o documento codificando - similar ao uso de libs para criar pdf e outros formatos. Aqui utiliza-se o próprio OpenOffice para montar, de um jeito quase-WYSIWYG, o documento. É mais simples, mas pode-se deixar xml-lixo no documento.
Segundo, esta abordagem não é só para Writer, mas para planilhas eletrônicas Calc ou qualquer outro documento da suíte OpenOffice. Na realidade, é mais geral ainda - pode-se criar figura ou animações sgv, em pricípio. No site http://www.floridia.net/OpenDocumentFormat tenho um exemplo de planilha.
Abraços,
Giovanni
A documentação do PDF é importante para aplicações mais complexas, inclusie para contribuir com o próprio phpdocwiter, que eu não conhecia.
Valem duas ressalvas. Primeiro, a abordagem do projeto é de gerar o documento codificando - similar ao uso de libs para criar pdf e outros formatos. Aqui utiliza-se o próprio OpenOffice para montar, de um jeito quase-WYSIWYG, o documento. É mais simples, mas pode-se deixar xml-lixo no documento.
Segundo, esta abordagem não é só para Writer, mas para planilhas eletrônicas Calc ou qualquer outro documento da suíte OpenOffice. Na realidade, é mais geral ainda - pode-se criar figura ou animações sgv, em pricípio. No site http://www.floridia.net/OpenDocumentFormat tenho um exemplo de planilha.
Abraços,
Giovanni
26/01/2006 8:52am
(~19 anos atrás)
Existe um projeto chamado PHP DocWriter (http://phpdocwriter.sf.net) que utiliza classes do PHP para gerar todo o arquivo OpenOffice. Ele já faz o trabalho de geração de tabelas, propriedades da página, formatação de caracteres, imagens etc. Há muitos recursos ainda não implementados, mas, para projetos que demandem poucos recursos esta é uma excelente classe para geração de relatórios.
Gostei muito do artigo por ter abordado a coisa prática ao invés da teórica. De qualquer forma, para a utilização de recursos avançados, é fundamental a leitura do PDF sobre OpenDocument.
Parabéns!
Gostei muito do artigo por ter abordado a coisa prática ao invés da teórica. De qualquer forma, para a utilização de recursos avançados, é fundamental a leitura do PDF sobre OpenDocument.
Parabéns!
26/01/2006 6:11am
(~19 anos atrás)
Valeu!
Adriano