使用JrxmlDatasource在jasperreports中显示希腊字母

时间:2012-11-06 09:58:56

标签: java xml jasper-reports

我正在尝试在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,我收到了我想要的信。

1 个答案:

答案 0 :(得分:1)

经过一些研究后,我发现PDF字体是导致问题的原因。我一直在使用3.6版,所以我切换到3.7版,能够在PDF中嵌入字体并使用博客中描述的方法: Link. 我使用过2号解决方案(简单的方法),但一定要检查1号解决方案,以便为粗体,斜体选择正确的字体等.Arial字体对我来说足够了。