导出为 pdf 时如何正确呈现印地语?

How can I render hindi correctly when exporting to pdf?

我正在为 jasper 报告使用 i-report 5.5.0。我需要将印地语文本导出为 PDF 格式,但印地语部分正在转换为 ???????

我已经使用了字体扩展,但没有用:

font name: "lohit Devanagari"
PDF embedded: checked
PDF encoding:Identity-H

我也试过其他印地语字体,但到目前为止没有效果..

<textField>
    <reportElement x="111" y="26" width="100" height="20" uuid="5a471a16-de7b-4f55-9c9f-b01d37938b9f"/>
     <textElement>
        <font fontName="Lohit Devanagari" pdfEncoding="Identity-H" isPdfEmbedded="false"/>
    </textElement>
    <textFieldExpression><![CDATA[$F{DISTRICT_NAME}]]></textFieldExpression>
</textField>

正确的方法是使用 font-extensionspdfEncoding="Identity-H" 弃用

先清除这个:

  1. 是我的实际 .tff 支持 (OpenType) 并且字体实际上可以 render 字符。并非所有字体都呈现 UTF-8
  2. 中的所有字符

Once you have created correctly font extension and its not working this is probably your problem..

  1. 我是否将 正确的编码 传递给 iText。有疑问(或一般)使用 编码 Identity-H 建议用于较新的 PDF 标准 并让您能够混合不同的编码。

Identity-H seems ok

  1. 我的字体 是否嵌入 以便如果我共享 pdf 也计算机不 有这个字体才能显示内容

Embed your font (otherwise if you make it work on your computer it may not work on others), note in your jrxml is isPdfEmbedded=false, remove tag and in font-extension select true or set tag to true.

现在只需正确生成 字体扩展 并将其添加到您的 classpath,

编辑:用户传递字体后

字体 Krutidev_011.TTF 不是有效的 ttf 字体,这可能是因为不幸的是,根据 Apple 的标准和根据 Microsoft 的标准不同(我猜你的字体是 apple ttf 而不是开放式 ttf)。

Caused by: net.sf.jasperreports.engine.JRRuntimeException: java.awt.FontFormatException: java.nio.BufferUnderflowException
at net.sf.jasperreports.engine.fonts.SimpleFontFace.setTtf(SimpleFontFace.java:178)

我尝试 download 来自网络的有效 ttf 字体 Lohit Devanagari 并将其添加为字体扩展名,fontName="Lohit Devanagari" 这是我的结果:

正在渲染字体,但结果可能有 Ligaturizer 问题,有关如何解决这些问题,请参见

如果你喜欢试试这个是我用的字体扩展font extension jar for Lohit Devanagari,记得设置fontName="Lohit Devanagari"

我有同样的问题,我用 gargi.ttf 字体解决了它。 download here 使用此配置

"gargi" => array(
        'R' => "gargi.ttf",
        'useOTL' => 0xFF,
    ),

这对我有用

IndicLigaturizer  hindi = new DevanagariLigaturizer();
String result = hindi.process(string);

Jasper 报告:- 您可以对印地语使用 Arial Unicode MS,并且在 java 构建路径

中包含相同的字体 jar

Jasper Font Arial Unicode MS

Arial unicode jar exported from ireport tool import in STS

Output same as input