October 27, 2026

Cavalero Technology

A place to talk about developer life and career

Criando Documento a partir de Templates com OpenOffice e Java

Deparei-me com o seguinte problema: como permitir ao usuário criar um template no OpenOffice Writer e utilizá-lo como modelo para criar relatórios na minha aplicação. Por exemplo: Minha aplicação gera uma fatura e precisa emitir um recibo. A empresa possui um recibo padrão, feito no OpenOffice. Como permitir que minha aplicação entenda esse documento como um modelo e possa utilizá-lo ao gerar o recibo?
Como para praticamente tudo em Java, existe um framework que faz exatamente esse trabalho, chama-se JODReports, open-source, que usa o Freemaker para fazer do documento do openoffice um template com tags especiais onde podemos adicionar informações via código.
Vamos começar com o Hello World. Abra o OpenOffice Writer e crie um documento com o texto:

Olá ${nome}!

E salve-o como helloworld.odt.
Agora vamos configurar o JODReports no Eclipse:

1) Crie um projeto Java de nome JODHello;
2) Copie o arquivo helloworld.odt para este diretório no seu workspace;
3) Crie uma pasta chamada lib;
4) A versão 2.4.0 do JOD Reports necessita dos seguintes jars:
net.sf.jodreports:jodreports:jar:2.4.0

  • org.slf4j:slf4j-api:jar:1.6.1 (compile) 
  • commons-io:commons-io:jar:1.4 (compile) 
  • org.freemarker:freemarker:jar:2.3.16 (compile) 
  • xom:xom:jar:1.2.5 (compile) 
  • junit:junit:jar:3.8.2 (test) 
  • org.slf4j:slf4j-jdk14:jar:1.6.1 (test) 
    • org.slf4j:slf4j-api:jar:1.6.1 (test)

Retirados do site deles (http://jodreports.sourceforge.net/docs/dependencies.html)
No link para downloads (https://sourceforge.net/projects/jodreports/files/JODReports 2.4/2.4.0/) tem todos os jars necessários. O jodreports-cli.zip possui um jar chamado jodreports-cli-2.4.0-jar-with-dependencies.jar que, como o nome diz, possui todas as dependencias dentro, não necessitando das outras bibliotecas. Podemos usar este. Coloque o build path no seu eclipse.
5) Crie uma classe: HelloJod.java

public class HelloJod {

public static void main(String[] args) throws Exception {
DocumentTemplateFactory documentTemplateFactory = new DocumentTemplateFactory();
DocumentTemplate template = documentTemplateFactory.getTemplate(new File("helloworld.odt"));
Map model = new HashMap();
model.put("nome", "Mundo");
template.createDocument(model, new FileOutputStream("hello-gerado.odt"));
}

}

Agora é só rodar e pronto! Você gerou um documento novo chamado hello-gerado.odt com o texto “Olá Mundo!” dentro.

Ainda estou fazendo testes com o framework, logo colocarei mais posts.

Para saber mais: JODReports Guide

O projeto tem pouca documentação, e por isso está um pouco difícil fazer alguns exemplos funcionarem. Mas na medida que for descobrindo posto aqui!

Abraços!

2 thoughts on “Criando Documento a partir de Templates com OpenOffice e Java”

  1. Fala Pedro Cavaléro! Muito interessante o post, ainda não precisei recorrer ao OpenOffice, pois a geração do .doc com o POI está funcionando perfeitamente. Apenas um ponto que não consegui trabalhar de forma alguma: negritar as palavras do texto.

    Queria algo como: replaceTextBold(#marcador#,"texto em negrito");

    Sabe se eu consigo isso de alguma forma? Obrigado!

Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright © All rights reserved. | Newsphere by AF themes.