【问题标题】:How do I know the correct encoding when I calling BaseFont.createFont() with itext?使用 itext 调用 BaseFont.createFont() 时如何知道正确的编码?
【发布时间】:2012-10-07 10:59:46
【问题描述】:

我有一些自定义的中文字体文件:

aaa.ttf
bbb.ttf
ccc.ttf

我想用它们用 iText 创建我的 pdf。

这是我用来创建BaseFont的代码:

String encoding = ???
BaseFont messageBaseFont = BaseFont.createFont("fonts/aaa.ttf", 
                               encoding, 
                               BaseFont.EMBEDDED);

但我不知道如何找到encoding。以aaa.ttf 为例:

我可以从信息中找到encoding 吗?我尝试了一些编码,如BaseFont.CP1252BaseFont.WINANSI,但它们不起作用,输出是空白页或大量?????? 字符,如果它们是汉字。

【问题讨论】:

    标签: pdf fonts itext


    【解决方案1】:

    这个问题有不同的答案。要获得完整的概述,您可以阅读我的书的第 11 章,“iText in Action”,但如果您只是想安全起见,请使用 Identity-H 来处理水平文本(和 Identity-V)。这并不是真正的编码,但它会在使用 Unicode 的 PDF 中创建复合字体:http://api.itextpdf.com/itext/com/itextpdf/text/pdf/BaseFont.html#IDENTITY_H

    【讨论】:

    • 感谢您的帮助,itext 的创建者。我刚刚试了IDENTITY_H,发现pdf中的字符可以正确显示。
    猜你喜欢
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2019-01-21
    • 2016-01-03
    • 2021-04-21
    • 2023-03-18
    相关资源
    最近更新 更多