
El algún desarrollo necesite construir un reporte con IReport, para poder cargar de los clientes la foto y la huella capturada en un sistema biométrico. Dichas imágenes se encontraban almacenadas desde java, en la base de datos como un array de bytes.
Investigando y consultando encontré que si se puede, y es colocar en las propiedades de la imagen, en el atributo “Image Expression” la siguiente línea: net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte []) $F{Foto})
Como veremos a continuación:
1. Registro de la base de datos y su respectiva información:
2. Datos almacenados en el campo Foto:
3. Consulta del reporte donde vemos los campos “Imagen,Foto”:
4. Diseño del reporte donde vemos los campos de la base de datos y los objetos de tipo imagen donde vamos a cargar.
5. En los atributos de la imagen es donde se coloca la expresión : net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte []) $F{Foto})
Y con todo lo anterior tenemos las imágenes cargadas de la base de datos en un archivo pdf generado desde IReport:
Espero haya podido ser claro, cualquier duda o inquietud hacerla vía email. Más adelante agregare una entrada sobre la invocación del reporte desde un aplicativo en java.
Hola, y si estoy trabajando las expreciones con el lenguaje JavaScript, es posible hacer ese tipo de codigo?
Saludos!
Disculpa la demora en contestar. No te sabría decir, pero ten en cuenta que el jasper debe estar en el servidor y no en el cliente. Tocaría indagar en google si lo han realizado. Buen día.
De que tipo es el field Foto?
Saludos jose. En mysql el tipo de dato es BLOB. Buen día
Buenas Tarde s me saca error me dice cannot cast image to string me pueds indicar que hafgo mal la foto la muestra pero la huella me saca ese error
Saludos Jesus!
me puede indicar exactamente donde le sale el error. Enviame un correo jmantillap@gmail.com con la imagen del error, para poderle colaborar. Buen dia.
en el boton dentro de la aplicacion q metodo debe realizar para generar el reporte de la foto
Saludos Franz!
Esto lo que hace es crear el report cuya extension es .jasper, para despues ser invocado en la aplicación java por medio de una acción o boton.
Ejemplo en esta página: https://www.javamexico.org/foros/java_standard_edition/como_llamar_un_reporte
o esta otra https://groups.google.com/forum/#!topic/javasos/wowp26ul0V4
Buen día
Hola amigo me puedes ayudar con ese error estoy en postgres 11 tipo de datos bytea
Desde ya muchas gracias
Compilation running time: 443!
Filling report…
Time zone: Default
Error filling print… Error evaluating expression : Source text : net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte[]) $F{imagen})
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : Source text : net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte[]) $F{imagen}) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:263) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:611) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:579) at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:1016) at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:492) at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:472) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:456) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:354) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:290) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:152) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:963) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:873) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:87) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:287) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:760) at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:891) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997) Caused by: net.sf.jasperreports.engine.JRException: Image read failed. at net.sf.jasperreports.engine.util.JRJdk14ImageReader.readImage(JRJdk14ImageReader.java:73) at net.sf.jasperreports.engine.util.JRImageLoader.loadAwtImageFromBytes(JRImageLoader.java:167) at net.sf.jasperreports.engine.util.JRImageLoader.loadImage(JRImageLoader.java:185) at report32name_1558543547949_625444.evaluate(report32name_1558543547949_625444:232) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:250) … 18 more
Print not filled. Try to use an EmptyDataSource…
Saludos Yeyu! Ya valido que el campo de la base de datos sea de tipo blob, osea que se pueda almacenar una imagen. Adicionalmente $F{imagen}, existe en el Query y el nombre es el mismo. (imagen en minuscula). Lo que me da a entender es que ese campo no esta en la consulta que se realiza hacia la base de datos. Espero que de algo te sirva esta explicación. Quedo pendiente.
Excelente, me sirvio mucho
Gracias!!
Con gusto.
Hola buen dia, tengo un problema al momento de llamar el jasper desde java, al correr la vista previa del reporte funciona bien, pero al llamarlo desde java, me avienta este error
error: Error evaluating expression for source text: net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte[])$F{imagen})
si pudieras ayudarme lo agradeceria mucho
Excelente, funciona al 100 lo cargué en la versión 1.3.3 sabrás algún método para la versión 0.2.3.0 es la que tienen aquí y en esa no compila correctamente y no están dispuestos a subir de versión :(, de antemano gracias.
Excelente que te funcionara. con respecto algun método para la cersion 0.2.3.0, no la tengo.. Que tengas buen día y disculpa contestar hasta ahora.
Saludos!
Disculpla que hasta ahora responda. La posibilidad de que no funcione desde java, puede ser que haga falta la libreria, en el aplicativo. Buen día.
Buen dia, la libreria la tengo :c, en realidad el reporte funciona perfectamente cuando no le pongo la imagen, y desde java sin problema, el error solo aparece cuando pongo la imagen en el reporte
Saludos Jorge. Lo que podemos hacer es prepara una session por hangouts para poderte colaborar y mirar que puede ser. Quedo atento. mi correo es jmantillap@gmail.com