我必须使用波兰语填写我的报告内容,所以我必须使用变音符号(ą,ć,ę,ł,ó,ż,ź).我对它们有问题,在将jasper print导出到输出后会跳过它们.当我在模板“lubiężółwie”(意为“我喜欢波兰语中的乌龟”)中写道时,输出pdf仅包含“lubi wie”(顺便说一句,这意味着“他喜欢他知道” – 因此它会发生很大变化;)).即使没有空格代替丢失的字母.他们只是被跳过了.
另外一个提示是,如果这些字符串是报表中的静态文本或动态$P {},则无关紧要
我的问题是:“如何使它们出现”?
我在尝试(没有成功):
>使用JRPdfExporter的方法setParameter(JRExporterParameter.CHARACTER_ENCODING,“UTF-8”)
>设置JRProperties.setProperty(“net.sf.jasperreports.default.pdf.encoding”,“UTF-8”);
>设置JRProperties.setProperty(“net.sf.jasperreports.export.character.encoding”,“UTF-8”);
>将REPORT_LOCALE放入参数图(JasperFillManager.fillReport)
解决方案:它确保在我的情况下,将字体附加到类路径,定义自己的jasperreports_extension.properties和fonts.xml就足够了.细节here.如果有人使用Grails框架来做(像我一样)here是更准确的例子.正如Wojtek所写,Addidtional和required步骤是设置JRProperties.setProperty(“net.sf.jasperreports.default.pdf.encoding”,“Cp1250”).仍然不知道为什么,但当我知道答案时,我会更新解决方案.
最佳答案 如果您正在使用Windows计算机:
在JasperReports jar存档中,您将找到名为default.jasperreports的配置文件,将其打开并更改以下属性的值,如下所示:
net.sf.jasperreports.default.pdf.encoding=Cp1250
您还可以使用:
JRProperties.setProperty(“net.sf.jasperreports.default.pdf.encoding”,“Cp1250”)
但我认为第一个解决方案更清洁.另请确保您的字段的pdf字体支持diacritic字符,如Alex K所述. AFAIK这些字体在字体选择组合框中以粗体显示.
如果您希望在报表中使用UTF-8字体,则必须先将它们放在类路径上并明确包含它们.