Jasper Reports PDF 不导出西里尔文值
Posted
技术标签:
【中文标题】Jasper Reports PDF 不导出西里尔文值【英文标题】:Jasper Reports PDF doesn't export cyrillic values 【发布时间】:2016-03-06 15:04:25 【问题描述】:我正在尝试将 jasper 导出为 pdf,但它没有显示西里尔字母值。当我将它导出为 excel 时,它确实显示并且输出很好,但是当我尝试导出为 PDF 时,它不会导出西里尔字母值。西里尔字母的值不是用西里尔字体写的,而是用西里尔键盘写的。
我用来导出的代码是:
JRExporter e = new JRPdfExporter();
e.setParameter(JRPdfExporterParameter.JASPER_PRINT, jasperPrint);
e.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, outStream);
e.setParameter(JRPdfExporterParameter.OUTPUT_FILE_NAME, NAME);
我什至尝试指定以下参数:
e.setParameter(JRPdfExporterParameter.CHARACTER_ENCODING, "UTF-8");
但没有成功。有什么建议吗?
【问题讨论】:
输出结果在这里:snag.gy/ip5F7.jpg 需要添加字体扩展类似问题***.com/questions/33940126/…。如果添加字体扩展(Idenity-H,嵌入式)后仍有问题,请告诉我们 我的问题与向 iReport 或 JasperSoft 添加字体扩展有什么关系?我的导出是通过执行 jasper 报告的 java 代码完成的。尽管如此,jasperreports-fonts 的依赖关系也在 maven 中指定 IReport 或 JasperSoft 仅指示为生成需要包含在您的 java 代码中的字体扩展的 jar(答案的检查点 3 和 4)的工具。但是如果您确定您的项目中包含正确的字体扩展名(包含支持您的字符的 .ttf 字体。)我想这不是问题,但我仍然会押注字体扩展名问题.... 我建议您编辑您的问题,使用您的 fontsFamily.xml 和您的 jasperreports_extension.properties 指示您正在使用哪个 .ttf。 (以及是否可以下载 .ttf) 【参考方案1】:Jasper 报告使用 iText 并且总是当 char 未在 pdf 中呈现时 这应该是清单:
-
我的实际
.tff
支持 (OpenType) 字体是否可以实际渲染 字符。并非所有字体都呈现
UTF-8
中的所有字符,参见 How can I test if my font is rendered correctly in pdf?
我是否将正确的编码传递给 iText。如有疑问(或一般情况下),请使用编码 Identity-H
,建议将其用于较新的 PDF 标准,并让您能够混合不同的编码。
我的字体是否嵌入,这样如果我共享 pdf,没有该字体的计算机也可以显示内容吗?
如何确保这是 JasperReport?
不推荐使用的方法是在textElement
上设置属性
<textElement>
<font pdfFontName="Helvetica" pdfEncoding="Identity-H" isPdfEmbedded="true"/>
<paragraph lineSpacing="Single"/>
</textElement>
当前不推荐使用的方法 v 3-6,是添加字体扩展,这很容易通过使用像iReport或JasperSoft Studio这样的工具来生成你的.jar
字体扩展名,以便您可以将其直接包含在 classpath 中。
How to generate font extension .jar using iReport or JasperSoft Studio.
编辑: OP 的问题是清单上的 1(.ttf 字体无法呈现),但他肯定应该考虑使用非弃用方法的 2 和 3。
【讨论】:
以上是关于Jasper Reports PDF 不导出西里尔文值的主要内容,如果未能解决你的问题,请参考以下文章
Jasper Reports:证明分布式对齐文本字段/静态文本的合理性
利用程序将.jrxml导出为.jasper文件并用PDF显示