我要在PDF中打印以下数据
101 HARRIER WAY<br>OMVILLE<br>BELLSHIRE<br>OM1 1HA<br>
需要以下列方式显示,
101 HARRIER WAY
OMVILLE
BELLSHIRE
OM1 1HA
但是打印如下,
更新
当我在OMVILLE
说
101 HARRIER WAY<br>HELLO WORLD BANGALORE<br>BELLSHIRE<br>OM1 1HA<br>
效果很好。当我给OMVILLE
代码:
<?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="accountStatement" pageWidth="720" pageHeight="1008" columnWidth="680" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isTitleNewPage="true">
<parameter name="address" class="java.lang.String"/>
<queryString>
<![CDATA[]]>
</queryString>
<title>
<band height="914" splitType="Stretch">
<textField isStretchWithOverflow="true" pattern="" isBlankWhenNull="true">
<reportElement positionType="Float" stretchType="RelativeToTallestObject" x="117" y="141" width="297" height="105" isRemoveLineWhenBlank="true"/>
<textElement markup="html">
<font size="9" isBold="false" pdfFontName="Helvetica"/>
<paragraph lineSpacing="Single" tabStopWidth="60"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$P{address}]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>
我使用 iReport 4.0.2 运行此代码,而我的 JasperReports 版本为4。
为了运行上面的代码,使用所有输入参数作为默认值,对于地址参数,将下面的一个作为输入。
101 HARRIER WAY<br>OMVILLE<br>BELLSHIRE<br>OM1 1HA<br>
P.S:我正在生成PDF格式的jrxml。
答案 0 :(得分:2)
您的示例适用于此版本的 JasperReports API : 4.0.1 和 4.1.1 ,但我遇到了同样的问题与 4.0.2 版本一样的问题。
我们可以比较 JRPdfExporter 的两个版本的实现,例如 4.1.1 和 4.0.2 版本。
正如您所看到的,PdfTextRenderer的源代码对于这两个版本是不同的,例如方法draw已更改。此方法 draw()包含对 iText 框架的ColumnText.go()方法的调用。此方法用于在 pdf 文档中绘制文本。
您可以升级 JasperReports 库的版本。最后一个是 5.2.0 ,你的样本可以使用它。如前所述
如果无法升级 JR 库的版本,则可以修复 PdfTextRenderer 类的源代码。
我写了一个小样本来测试你的问题。我已经使用 Maven 项目 - 在 JR 库版本之间进行简单切换。
用于测试问题的 Java 类的源代码:
public static void testReport() throws JRException {
Map<String, Object> params = new HashMap<String, Object>();
params.put("address", "101 HARRIER WAT<br/>OMVILLE<br/>BELLSHIRE<br/>OM1 1HA<br/>");
JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());
JasperExportManager.exportReportToPdfFile(jasperPrint, outputFileName);
}
“苗条”测试 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="accountStatement" pageWidth="720" pageHeight="1008" columnWidth="680" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isTitleNewPage="true">
<parameter name="address" class="java.lang.String"/>
<queryString>
<![CDATA[]]>
</queryString>
<title>
<band height="914" splitType="Stretch">
<textField>
<reportElement x="117" y="141" width="297" height="105"/>
<textElement markup="html">
<font size="9" isBold="false" pdfFontName="Helvetica"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$P{address}]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>