+2

Gerando Documentos OpenOffice Dinamicamente

criado por Giovanni Floridia em 25/01/2006 6:58am
A versão 2.0 do OpenOffice adota um formato aberto e foi aprovado pelo consórcio OASIS em 1o. de maio de 2005. A adoção de padrões abertos é até mais importante que a adoção de softwares em código aberto. O formato pretende ser aberto à adoção de qualquer suíte de aplicativos de escritório e deverá ser adotado por outros programas, como o koffice que o implementará em versão futura.

O formato é baseado em XML e sua descrição detalhada é complexa. Entretanto, não é necessário conhecer as 706 páginas da especificação!

Basicamente o formato, assim como o formato anterior do OpenOffice 1.x, é uma arquivo compactado no formato zip. Quando descompactado ele apresenta a seguinte estrutura básica:

META_INF/
        manifest.xml
Configurations2/
Pictures/
Thumbnails/
mimetype
meta.xml
settings.xml
style.xml
content.xml

O arquivo que nos interessa é o content.xml.

Antes de prosseguir você deve dizer ao seu OpenOffice para não compactar o xml, retirando as identação. Em Ferramentas | Opções | LoadSave | Geral desabilite a opção "Size optimization for XML format", ou sua equivalente.

Nosso exemplo se baseará no formato OpenOffcie 2.0, mas tudo funciona com a versão anterior. Apesar disso, acredito que devemos estimular a adoção do novo formato por ser um padrão OASIS.

Tente salvar um arquivo, descompatá-lo e abrir o content.xml com o editor de sua preferência.

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.)