Salvar pdf gerado pelo Fop+Velocity

2 respostas
paulohbmetal

Fala aí pessoal, blz? Seguinte, existe um relatório de uma aplicação antiga aqui que usa FOP e Velocity. Esse relatório é gerado em PDF. Atéaí tudo bem. Eu queria saber como faço para salvar o relatório diretamente em um diretório sem que apareça a caixa de diálogo para o usuário salvar? O relatório tem o seu arquivo .fo e o mesmo é preenchido pelo contexto do Velocity. Se alguém puder ajudar, agradeço.

Paz e bem!

2 Respostas

paulohbmetal

Olha aí pessoal, o que encontrei: http://www.ibstaff.net/fmartinez/?p=15

Paz e bem!

paulohbmetal

Segue um fonte que pode ajudar quem está usando versões mais antigas, como eu:

VelocityEngine ve = new VelocityEngine();
ve.setProperty(VelocityEngine.RUNTIME_LOG_LOGSYSTEM, this);
ve.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH, getServletContext().getRealPath("path_templates_velocity"));
ve.init();

Template temp = ve.getTemplate(nome_do_template.fo);
//Arquivo de saída (PDF)
FileOutputStream out = new FileOutputStream(new File("<diretorio_do_pdf>/arquivo.pdf").getCanonicalPath());

//Writer onde vai ser escrito o resultado do merge do Contexto Velocity e o arquivo do FOP (.fo)
StringWriter stringWriter = new StringWriter();
//faz o merge e joga o resultado no StringWriter
temp.merge(ctx, stringWriter);

Driver driver = new Driver();
driver.setRenderer(Driver.RENDER_PDF);

//cria um InputSource através do StringWriter gerado
driver.setInputSource(new InputSource(new StringReader(stringWriter.toString())));                
driver.setOutputStream(out);

//Gera PDF
driver.run();

Espero que ajude alguém.

Criado 20 de julho de 2009
Ultima resposta 28 de jul. de 2009
Respostas 2
Participantes 1