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

标签 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 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 中,我得到了我想要的字母。

最佳答案

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

关于java - 使用 JrxmlDatasource 在 jasperreports 中显示希腊字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13248580/

相关文章:

java - 重新加载 xml 文件后重新加载 GUI

android - LinearLayout 的 setPadding 是否损坏?

java - 如何使用 jasper/jrxml 创建如图所示的 pdf 目录?

java - 使用比较器对对象进行排序给出空指针

html - CSS:包含与水平规则对齐的 block 的多列布局

java - 使用 Java 代码进行 XML 验证

java - 使用包含图表 5.5.0 的 JRViewer 报告和 jasper 报告打印

excel - 从 JasperViewer 保存到 Excel

java - hibernate 不进行急切获取(使用获取 ="join"和惰性 ="false")

java - Android Studio 推送标签到远程