GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Jasper - Exibir base64 que está gravado no banco

jasper
Tags: #<Tag:0x00007f65368e6d20>
#1

vi vários exemplos na internet de como fazer porém nenhum funciona…
segue o que eu fiz porém não funciona…

<image isLazy="true">
	<reportElement key="image-1" x="0" y="0" width="120" height="110" uuid="3bfed28d-44e8-4e3b-a7f1-a94ce0252d83"/>
	<imageExpression><![CDATA[net.sf.jasperreports.engine.util.JRImageLoader.getInstance(new SimpleJasperReportsContext()).loadAwtImageFromBytes(javax.xml.bind.DatatypeConverter.parseBase64Binary($F{EMP_LOGO}))]]></imageExpression>
</image>
0 Likes

#2

Pra usar diretamente loadAwtImageFromBytes você deverá gravar diretamente no banco os bytes do arquivo em um campo blob, sem essa gambiarra de string codificada em base64. Do contrário, converter pra bytes.

0 Likes

#3

alguém tem alguma solução sem ter que alterar rotinas que já estão a anos assim no sistema?

0 Likes

#4

Tu leu acima? Converte pra bytes. Pega a string base64 e converte pra bytes, assim poderá usar esse método loadAwtImageFromBytes .

0 Likes

#5

resolvido
passei assim…
detalhe o tipo tem que ser do STRING

<imageExpression><![CDATA[javax.imageio.ImageIO.read(new java.io.ByteArrayInputStream(Base64.getDecoder().decode($F{EMP_LOGO})))]]></imageExpression>

E tive que remover o 
data:image/png;base64, no meu caso como estava no banco dei um replace
Ex: replace(Campo,'data:image/png;base64,','')
0 Likes