implementar ejemplo bootstrap java pdf-generation jasper-reports itext fop

ejemplo - PDF Generation Library para Java



implementar bootstrap en jsf (6)

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.

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

Mis requisitos

  • generación de documentos PDF sobre la marcha (principalmente formularios de pedido, facturas)
  • Basado en Java
  • fácil de maquetar
  • debe ser de código abierto
  • fácil de cambiar el diseño

Mucha gente parece usar 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 con 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 de que Apache FOP podría ser una solución aquí, pero una vez más me parece tedioso trabajar con XSLT y leí que FOP puede ser lento cuando se trata de un gran grupo de muchos documentos.

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

Tiene alguna idea sobre esto?


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

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.


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 coloca en Altova StyleVision donde puede hacer informes de diseño WYSIWYG en base a los datos que extrae del XSD. Ese software produce un XSLT. Entonces mi programa:

  • Produce el XML "puro" independiente del formato
  • Lo transforma con XSLT, cuyo resultado es XML-FO
  • Use 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: También debo señalar 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.


Según mi experiencia, le sugiero que considere seguir las bibliotecas de PDF de Java para crear informes en PDF,

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

Para su requerimiento, 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.


Una posibilidad es

  • para crear sus documentos en formato PostScript y luego
  • conviértalo a pdf usando ghostscript (ps2pdf)

Docmosis le permite crear plantillas en Word o OpenOffice Writer , separando las preocupaciones y el diseño en las herramientas más familiares.