我目前正在尝试在使用JasperReports 5.2.0生成的报告中显示日文字符。文档中的日文字符丢失。当我检查PDF属性时,我发现文档中只存在一种字体:Helvetica。
通过一些研究,我发现IText库负责生成PDF导出。 JasperReports 5.2.0使用itext-2.1.7.js2。这个jar不包含国际字符集。相反,这是在IText-Asian中以不同的许可证(AGPL)单独提供的。
JasperReports库教程(http://community.jaspersoft.com/wiki/jasperreports-library-tutorial)说:
为了简化字体设置的使用,新元素是 介绍:。
报告字体是可用作的报告级字体定义 全局中其他字体定义的默认或基本字体设置 整个报告。由于对国际角色的支持是 以某种方式绑定到iText库,您可以找到有关如何的更多详细信息 用不同的语言和不同的角色创建PDF文档 在iText文档中设置。
这似乎意味着国际字符被锁定在IText库的更高版本之后。
是否可以将国际字符字体嵌入PDF而无需升级到JasperReports 6.x或IText 5.x?
更新
我尝试使用带有内容的JasperReports_extensions.properties设置一个简单的字体扩展名:
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.test=path/to/fonts/fonts.xml
此XML文件包含:
<fontFamily name="Arial Unicode MS">
<normal>path/to/fonts/testJA/ARIALUNI.TTF</normal>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'Arial Unicode MS', Arial, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">'Arial Unicode MS', Arial, Helvetica, sans-serif</export>
</exportFonts>
<locales>
<locale>ja_JP</locale>
</locales>
</fontFamily>
目标目录包含windows ARIALUNI.TTF文件。 (注意,不打算使用它,目前仅用于调试)。