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