2010-10-21 41 views
33

Sé que esto se ha preguntado antes, pero aún estoy indeciso sobre qué marco de generación de PDF usar para mi proyecto actual.PDF Generation Library para Java

Mis requisitos

  • sobre la marcha generación de documentos PDF (principalmente formularios de pedidos, facturas)
  • basado en Java
  • fácil Disposición
  • debería ser de código abierto
  • fácil para cambiar el diseño

Mucha gente te parece se iText, pero tengo algunas preocupaciones (aparte de la licencia modificada) con respecto a la separación de inquietudes: en un contexto HTML hay una buena compatibilidad MVC, donde normalmente me apego a Spring MVC y FreeMarker para separar la lógica y el diseño. Estoy un poco preocupado de que con iText termines mezclando código y diseño mucho.

Soy consciente, que Apache FOP podría ser una solución a este problema, pero por otra parte me parece tedioso XSLT para trabajar y he leído que la FOP puede ser lento cuando se trata de enorme throuput de muchos documentos?

También consideré JasperReports, pero desde mi punto de vista, esto es más adecuado para informes que contienen conjuntos de datos tabulares en lugar de documentos únicos como facturas que requieren un gran formato de diseño.

¿Alguna idea de esto?

+1

@Pang et al .: Me gustan ustedes muchachos: DI sé las reglas fuera de tema, pero aún así: Esta es _easily_ mi pregunta más popular, con la mayoría de los votos ascendentes y la mayoría de las vistas, así que supongo que este tipo de preguntas preguntas _es_ útiles para los usuarios en SO. Por qué sigues cerrando esas preguntas está completamente fuera de mi mente. –

+0

Haberi Yo tampoco lo entiendo. Al cerrar una pregunta similar, recomendaron un sitio SO para recomendaciones de software en su lugar, pero estaba pidiendo una biblioteca o marco para facilitar la implementación del algoritmo de yarda de derivación (que estoy implementado bastantes veces) de todos modos no lo hace No importa si se trata de un procesador de textos, o una biblioteca de software, o un marco de software aparentemente, ese es el lugar adecuado para preguntar ... lo cual está bien, es fácil de preguntar, pero casi nadie frecuenta quién realmente tendrá una respuesta. – Quaternion

Respuesta

18

Dale una oportunidad a JasperReports. Use iReport para crear los archivos .jrxml. JapserReports puede manejar diseños complejos. Para aquellas partes del informe basadas en diferentes consultas, eche un vistazo al uso de subinformes integrados en el informe principal.

Al igual que la solución de @Adrian Smith, este enfoque separará la edición del diseño del informe de la fuente de datos.

+0

+1 ¡Parece un buen producto también! –

+0

Gracias Janek, creo que haré un prototipo usando Jasper –

+8

Solo en caso de que alguien del futuro tropiece con este viejo hilo: Use [JasperSoft Studio] (http://community.jaspersoft.com/project/jaspersoft-studio) ahora en lugar de iReport. –

9

He implementado una buena solución donde mi software crea un archivo XML "puro" independiente del formato, luego le doy a mi jefe el XSD y lo pone en Altova StyleVision donde puede WYSIWYG informes de diseño basados ​​en datos que extrae de el XSD. Ese software produce un XSLT. Así que mi programa:

  • Produce el XML independiente del formato "puro"
  • transforma con el XSLT, cuya salida es XML-FO
  • Uso Apache FOP para convertir el XML-FO en PDF

Esta es una gran solución, significa que ya no tengo que cambiar mi código (como programador) cada vez que mi jefe quiere cambiar un color en el informe, mi trabajo es simplemente producir XML "puro" .

Actualización: Debo señalar también que le doy a mi jefe acceso a nuestro repositorio SVN con Tortoise SVN, que es lo suficientemente fácil de usar que puede usarlo sin error. Así que puede verificar los archivos XSLT directamente en SVN y ejecutar la compilación/implementación sin siquiera tener que interrumpirme en mi trabajo. Obviamente, el flujo de trabajo solo funciona con personas que son lo suficientemente exactas como para no cometer errores, etc., pero en ese caso nos funciona bien.

1

He estado usando JODConverter por un tiempo y me gusta mucho.

Lo que hacemos es usar JODReports para generar documentos dinámicos de OpenOffice.org (que internamente usa FreeMarker). Luego convertimos estos documentos a documentos PDF usando JODConverter.

Parece mucho trabajo, pero realmente no lo es.

1

Una posibilidad es

  • para crear documentos en formato PostScript y luego
  • convertirlo a PDF usando Ghostscript (ps2pdf)
2

Docmosis le permite crear plantillas en Word u OpenOffice escritor: separar las preocupaciones y el diseño en las herramientas más familiares.

2

Basado en mi experiencia, sugeriría que considere siguiente Java PDF Libraries para la creación de informes en formato PDF,

  1. DynamicReports
  2. Apache PDF Box
  3. iText PDF
  4. PDF payaso

Para su requisito, creo que DynamicReports sería la elección correcta. He estado utilizando informes dinámicos de los últimos 3 años para todos mis requisitos de informes PDF. Con una cantidad de código muy inferior, puede crear fácilmente un PDF verdaderamente dinámico. Dynamicreports es una envoltura alrededor del Informe Jasper. Por lo tanto, internamente hace uso del informe de Jasper.