3

我正在尝试在 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 导出到文件时,从 &#x393; 更改字符 回到 Γ ,将其作为数据源导入 iReport 中,我得到了我想要的信。

4

1 回答 1

1

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

于 2012-12-01T14:04:21.063 回答