【问题标题】:How can I render hindi correctly when exporting to pdf?导出为 pdf 时如何正确呈现印地语?
【发布时间】:2016-03-21 02:57:36
【问题描述】:

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

我已经使用过字体扩展,但没有帮助:

字体名称:“lohit Devanagari”
PDF 嵌入:检查
PDF 编码: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>

【问题讨论】:

标签: fonts jasper-reports export-to-pdf hindi


【解决方案1】:

这对我有用

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

【讨论】:

  • 谢谢你,我在这上面浪费了几天时间。
【解决方案2】:

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

先清除这个checklist to render font in pdf

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

一旦你创建了正确的字体扩展并且它不工作,这可能是你的问题..

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

Identity-H 好像没问题

  1. 我的字体是嵌入吗,这样如果我共享 pdf 也不是计算机 有这个字体可以显示内容。

嵌入你的字体(否则,如果你让它在你的电脑上工作,它可能 不适用于其他人),请注意您的 jrxml 中为 isPdfEmbedded=false,删除标签并在字体扩展中选择 true 或将标签设置为 true

现在只需正确生成 font-extension 并将其添加到您的classpath

How to add font extensions

编辑:用户传递字体后

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问题,如何解决这些问题,例如Why is the Gujarati-Indian text not rendered correctly using Arial Unicode MS?

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

【讨论】:

  • 我的实际 .tff 正在正确呈现单词,当我导出为其他格式时它运行良好(如 HTML、ODT、EXCEL)只有 PDF 导出会产生问题
  • 你能分享你的字体扩展的jar吗?和你的 jrxml(或者一个小 jrxml,没有显示文本来测试你的字体扩展)?
  • @Priyesh Mishra 我已编辑答案,您的 TTF 无效(这取决于存在不同 TTF 类型的事实......),检查编辑
  • 当我将 jar 文件附加为外部时,问题得到了解决。非常感谢您的帮助和指导
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2018-11-15
      • 2013-05-30
      • 2012-11-14
      • 1970-01-01
      • 2018-08-17
      相关资源
      最近更新 更多