【发布时间】:2016-04-13 13:42:50
【问题描述】:
我想在从 jasper 报告 5.1 版导出的 PDF 报告中显示不同的字体(古吉拉特语-印度语言)。
我尝试过的: 运行工具后打开以下位置 第 1 步:
工具 -> 选项 -> 字体
net.sf.jasperreports.default.font.name=Arial Unicode MS - the default font name.
net.sf.jasperreports.default.font.size=10 - the default font size.
net.sf.jasperreports.default.pdf.font.name=Identity-H - the default PDF font.
net.sf.jasperreports.default.pdf.encoding=UTF-8 - the default PDF character encoding.
net.sf.jasperreports.default.pdf.embedded=true - by default PDF fonts are not embedded
字体“Arial Unicode MS”已安装,其 jar 文件也已创建。Jar 文件在 jasper 报告的类路径中退出。
链接已关注 :1) Fonts 2)Sample fonts
第 2 步:irfonts.xml
默认情况下,jasper 报告会在此文件中提供我将其更改为的其他字体。
<fontFamily name="Arial Unicode MS">
<normal>net/sf/jasperreports/fonts/dejavu/ArialUnicodeMS.ttf</normal>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
第 3 步:
我得到什么结果: હીપ્સ 我真正想要的: હિપ્સ
花了一些时间后,我才知道当您在 Jasper 报告模板中呈现页面时,字体正在根据需要工作,但是当您将其导出为 pdf 时,它会更改原因所有字体都通过“itext pdf 引擎”。
现在,技巧是 itext 没有我当前使用的字体。
有没有什么方法可以实现。
注意事项: 它不是使用 Java 创建的。我是 Oracle 数据库开发人员,因此仅使用工具创建并使用工具边界打印。
也关注了这个博客,但它是在 java 中,所以不知道在哪里进行更改。 Blog of java
示例代码:
<textField>
<reportElement x="111" y="26" width="100" height="20" uuid="5a471a16-de7b-4f55-9c9f-b01d37938b9f"/>
<textElement>
<font fontName="Arial Unicode MS" pdfEncoding="Identity-H" isPdfEmbedded="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{my_column_values}]]></textFieldExpression>
有些类似的问题也是栈溢出问题,但都是用java调用和打印的。
那么,我可以更改 itext 库还是任何其他解决方法都可以。 我是如何创建的:
2) Jasper
【问题讨论】:
-
I'm a Oracle Database Developer so created using tool only and printing withing tools boundaries.- 您使用 JasperReports 生成报告的方式是什么?你的任务是什么? -
基于数据源,它将使用我的数据库列,并基于我创建的列来呈现数据。
-
你可以查看这个来缩小你的问题How can I test my font in pdf和ligatures的渲染问题
-
注意你需要使用字体扩展看看这个how-can-i-render-hindi-correctly-when-exporting-to-pdf
-
尝试缩小范围,然后你需要提供一个minimal reproducible example,一个最小的jrxml(也没有数据,例如使用标题带和一个参数),链接到ttf字体,当前结果和预期结果。这样我们就可以得到一个很好的问题,并可以为您提供一个体面的答案。
标签: fonts jasper-reports export-to-pdf