Pregunta

entonces, el problema es cuando mostramos al documento creado por el usuario en JasperReport Dialog. El usuario puede presionar el icono de impresión y enviarlo a la impresora.

Parece tomar demasiados recursos en la computadora del cliente en los tres niveles: crear un informe, mostrar el informe en la pantalla y enviarlo a la impresora. Un PC de ejemplo es AMD Duron 800MHz con 256 MB de RAM, por lo que debemos ver si podemos hacer algunas optimizaciones para una mejor experiencia de usuario.

También requiere recursos significativos en una computadora 'normal' con procesador de 2 GHz y 1 GB de RAM, así que necesito ver si hay una opción para ajustar JasperReport para que se comporte menos recursos.

¿Fue útil?

Solución

El uso excesivo de subinformes puede aumentar la demanda de recursos para un informe. Cada subinforme genera su propio hilo durante el tiempo de llenado. Además, si está utilizando scriptlets o clases auxiliares, asegúrese de que todos los recursos que crean se limpien correctamente. También asegúrese de estar utilizando el último paquete JR.

Una nota. La API JR incluye un conjunto de virtualizadores. Cuando el informe se llena, todo el informe lleno se crea como un objeto (JasperPrint). Dependiendo del número de páginas en el informe, este objeto puede ser bastante grande. Los virtualizadores se pueden configurar para escribir en el sistema de archivos cuando se alcanza un umbral de página establecido.

Normalmente, esto reduce el uso general de memoria pero aumenta el tiempo de llenado. Una parte podría ser el virtualizador gzip que, en lugar de escribir en el sistema de archivos, comprime los objetos generados usando gzip.

Aquí hay una pregunta frecuente sobre el tema: http://community.jaspersoft.com/wiki/support-large-reports

El ejemplo al que se refiere se puede obtener descargando la fuente JR.

http://sourceforge.net/project/showfiles.php?group_id = 36382 & amp; package_id = 28579

Desde una vista de alto nivel, si está ejecutando este informe en una aplicación, puede crear una instancia del virtualizador (aquí está la interfaz que enumera las clases de implementación conocidas): http://jasperreports.sourceforge.net/api/net/ sf / jasperreports / engine / JRVirtualizer.html

Luego, la referencia se utiliza en el momento del llenado:

        JRDataSource ds = new JREmptyDataSource(10);
        JRFileVirtualizer virtualizer = new JRFileVirtualizer(2, "tmp");
        JasperPrint jasperPrint = fillReport(fileName, ds, virtualizer);

Si está en iReport, se puede configurar un virtualizador en Opciones - > Configuración.

Espero que esto sea útil.

Lucas

Otros consejos

Bueno, Jasper Reports es simplemente un frasco, por lo que debe ser más específico: ¿está ejecutando JasperReports en una aplicación web (en Tomcat, Glassfish, JBoss, etc.) o lo está ejecutando en iReport?

Si lo está ejecutando en un servidor de aplicaciones, lo más obvio que se me ocurre es asegurarme de que está utilizando el compilador de informes correcto, es decir, el compilador JDT. Definitivamente asegúrese de no estar usando el compilador de beanshell. Es lento como el infierno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top