我正在尝试在 jasperreport 生成的 PDF 中显示希腊字母。首先我创建 XML,然后创建 xml 数据源并将其传递给 jaspper。XML:
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
....
Element analysisElement = doc.createElement("Analysis");
//text value is from the database
Text analysisText = doc.createTextNode(anayisisObject.getName());
analysisElement.appendChild(analysisText);
数据源:
JRXmlDataSource xmlDataSource = new JRXmlDataSource(doc,"/ReportFailedAnalysis");
JRXML 文本字段:
<textField isStretchWithOverflow="true">
<reportElement style="obicni" positionType="Float" x="0" y="0" width="203" height="12"/>
<textElement markup="styled">
<font fontName="Arial" size="9" pdfEncoding="Cp1250"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{Analysis}]]>
</textFieldExpression>
</textField>
如果重要的话,数据库编码是 Cp1250,并且希腊字母被保存为 html 编码,例如 Γ。如果我只是传递该值,xml 可能会将 & 更改为 &,我会在我的 pdf 中得到 Γ。如果我用 utf 字符 \u03C6 替换它,我会得到“?” 在我的 PDF 中。我知道有一种方法可以显示该字段,因为当我将 XML 导出到文件时,从 Γ 更改字符 回到 Γ ,将其作为数据源导入 iReport 中,我得到了我想要的信。