【发布时间】:2017-04-22 17:37:01
【问题描述】:
我们有来自数据库的 HTML,我们想用这个 HTML 创建一个 Word 报告。此 HTML 来自用户,可能仅包含格式化文本(粗体、斜体...),或以 base64 方式编码的文本 + 嵌入图像。
例子:
<b>My photo :</b>
<img src="data:image/png;base64,iVBORw0K... " />
我们知道textField、markup="html" 不适用于img html 标记。在 Jasper Studio 6.3.1 中,我们尝试使用 <hc:html/>,它适用于硬盘驱动器上的图像,但它不适用于嵌入图像,说 base64 加密存在语法错误。
jrxml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="StylesReport" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30" uuid="53f914b8-f951-4433-971d-6b1819430c56">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<property name="net.sf.jasperreports.export.html.embed.image" value="true"/>
<import value="org.apache.commons.codec.binar.*"/>
<title>
<band height="742">
<textField hyperlinkType="Reference" hyperlinkTarget="Blank">
<reportElement x="0" y="30" width="515" height="30" uuid="c2015c9b-9130-4f39-a09e-c341c91d3794"/>
<textElement textAlignment="Center">
<font size="18"/>
</textElement>
<textFieldExpression><![CDATA["HTML Element Report"]]></textFieldExpression>
</textField>
<componentElement>
<reportElement x="0" y="100" width="230" height="110" backcolor="#ADD8E6" uuid="332dd551-e8cd-4cb0-a11f-7325f481017b"/>
<hc:html xmlns:hc="http://jasperreports.sourceforge.net/htmlcomponent" xsi:schemaLocation="http://jasperreports.sourceforge.net/htmlcomponent http://jasperreports.sourceforge.net/xsd/htmlcomponent.xsd" scaleType="RetainShape" horizontalAlign="Left" verticalAlign="Middle">
<hc:htmlContentExpression><![CDATA["<p style='background-color:yellow;font-family:verdana;font-size:50px;'>Hi, I am through HTML CODE using HTML Component</p><br><br><img src='data:image/gif;base64,/9j/dkjdkdkdkddk(INSERTIMAGEHEREITSTOOLONG!!!)' alt='Japser Architecture' height='1000' width='1800'>"]]></hc:htmlContentExpression>
</hc:html>
</componentElement>
</band>
</title>
</jasperReport>
Jasper 可以做到这一点吗?我们不想从数据库中解析 HTML 来做很多事情,我们真的希望 HTML 按原样写在报告上。
【问题讨论】:
标签: java image jasper-reports base64