+2

Gerando Documentos OpenOffice Dinamicamente

criado por Giovanni Floridia em 25/01/2006 6:58am
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.

Comentários:

Mostrando 1 - 4 de 4 comentários
Alguém tem algum exemplo de planilha com mais de uma pasta?

Valeu!

Adriano
07/03/2006 10:17am (~18 anos atrás)

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
26/01/2006 8:54am (~18 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
26/01/2006 8:52am (~18 anos atrás)

Paulo disse:
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!
26/01/2006 6:11am (~18 anos atrás)

Novo Comentário:

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