我正在尝试在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:
<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编码,例如&amp;#x393;。如果我只传递该值,xml可能会改变&amp;到&amp; amp,我在我的pdf中得到Γ。 如果我用utf character \ u03C6替换它,我得到“?”在我的PDF中。 我知道有一种方法可以显示该字段,因为当我将XML导出到文件时,更改字符来自&amp; amp;#x393;回到&amp;#x393; ,将其作为数据源导入iReport,我收到了我想要的信。
答案 0 :(得分:1)
经过一些研究后,我发现PDF字体是导致问题的原因。我一直在使用3.6版,所以我切换到3.7版,能够在PDF中嵌入字体并使用博客中描述的方法: Link. 我使用过2号解决方案(简单的方法),但一定要检查1号解决方案,以便为粗体,斜体选择正确的字体等.Arial字体对我来说足够了。