2011-11-23 43 views
15

Hace algún día mi jefe me preguntó si quería facturas en PDF desde la aplicación web. Dado que todos usan JasperReports y iReport para el diseño, lo intenté. Mi aplicación web está basada en Java + Hibernate y Spring. Al principio, Jasper parecía estar bien y yo también informar. De todos modos, me han detenido dos cosas:Buscando una alternativa a JasperReports

  • iReport es lo más lento que he visto en mi vida.
  • Más en serio, tengo ciertos frijoles que tienen cierta jerarquía de clases y es muy complicado manejar esto en Jasper. Todo el mundo en mi oficina utiliza Jasper con consultas SQL, y de esa manera es una herramienta fácil y práctica, pero pasé todo el día intentando mapear mis beans en informes y subinformes y muy pocos trabajos.

He visto DynamicJasper, pero parece que no puedo diseñar informes con él. ¿Qué piensas? ¿Hay alternativas más fáciles de usar?

+0

¿Está buscando alternativas que se trabajarán en conjunto con Java + Hibernate y Spring? –

+0

La API de DynamicJasper es la "envoltura" de JasperReports API –

+1

En cuanto al rendimiento de iReport, hay algún tipo de error en los recientes 4.1.x y 4.5 lanzamientos. Consulte esta publicación en el foro para obtener más información: http://jasperforge.org/plugins/espforum/view.php?group_id=83&forumid=101&topicid=94781#95291. Eliminar/restablecer classpath aumentó el rendimiento de iReport en un orden de magnitud para mí. – kaliatech

Respuesta

2

Como alternativa a iReport, puede probar el diseñador de JasperWave para JasperReports. Para abordar el segundo problema, ¿por qué no escribir algún código auxiliar de Java que traduzca la estructura de los beans a la estructura del informe? En cualquier caso, no siempre es fácil asignar los objetos de Java a algún tipo de estructura plana. Crea una interfaz java que oculte la complejidad de la estructura de los beans subyacentes. No estoy seguro de que el segundo problema sea la razón para buscar una solución de informes alternativa.

4

Si el tiempo es la esencia (como suele ser el caso cuando su jefe le da algo) Me gustaría recomendamos que visites iText (sitio principal es here).

Es muy, muy simple de aprender (puede tenerlo funcionando y generar ejemplos simples de "¡Hola, PDF!" En 20 minutos) y puede exportar casi cualquier cosa en PDF: tablas, listas, gráficos, imágenes, hipertexto, etc.

Por mi propia admisión, JasperReports implementando su JRBeanCollectionDataSource es una solución más elegante, flexible y permanente para usted. Pero si necesita una biblioteca rápida y sucia para producir archivos PDF, las próximas fechas de entrega de y se están acercando, yo descargaría el archivo JAR iText y lo tendré.

El sitio está cargado con ejemplos prácticos de código para casi cualquier cosa que desee lograr.

A diferencia de JasperReports, iText no es un generador de informes. Es solo un generador de PDF (que, por lo que puedo decir en su pregunta, suena como como todo lo que necesita). Por lo tanto, para cualquier frijol en particular, se acaba de seleccionar las propiedades que desea que exportan a la factura PDF y utilizar el Chunk, Paragraph, etc. clases para anexar al documento como sea necesario:

// Your POJO/Bean/VO 
Employee oEmp = new Employee(); 

Document oInvoicePdf = new Document(); 
PdfWriter.getInstance(document, new FileOutputStream("/invoices/2011/Invoice201.pdf")); 
document.open(); 
document.add(new Chunk("Employee's name is : " + oEmp.getName())); 
document.close(); 

Incluso si esto no es lo que estás buscando, cueste lo que cueste te recomendaría steer clear de Apache PdfBox. En mi humilde opinión, es pura maldad y solo romperá tu corazón.

Espero que esto ayude, y la mejor de las suertes!

+0

En segundo lugar PDFBox es difícil. Sus estructuras internas de datos parecen estar llenas de fugas de memoria y no están diseñadas para trabajar en documentos grandes. Terminé necesitando cerrar y volver a abrir el pdf fuente para borrar todos los datos innecesarios que mantiene. Realmente espero que solucionen estos problemas. –

+0

¿Hay alguna actualización nueva sobre esto? – powder366