iText7:如何指定PdfFont使用的OpenType功能?

时间:2018-03-25 12:21:21

标签: pdf itext7 opentype

对于复杂的脚本(在我的情况下为Tibt),我需要能够指定PdfFont应该使用的一些OpenType功能(请参阅here以获取与Tibt一起使用的功能)。我无法找到任何方法来指定iText,并且使用默认功能,结果不正常。

示例:

public static void main(String args[]) throws IOException {
    final String notoPath = "/usr/share/fonts/truetype/noto/NotoSansTibetan-Regular.ttf";
    final PdfWriter writer = new PdfWriter("tibttest.pdf");
    final PdfDocument pdfDoc = new PdfDocument(writer);
    final Document doc = new Document(pdfDoc);
    PdfFont f = PdfFontFactory.createFont(notoPath, PdfEncodings.IDENTITY_H, true);
    doc.add(new Paragraph("༄༅། །སྒྲུབ།").setFont(f));
    doc.close();
}

生成一个类似于:

的PDF

Nok result

虽然看起来像:

Expected result

有没有办法指定要使用的OpenType功能列表?

1 个答案:

答案 0 :(得分:1)

您使用的是附加组件pdfCalligraph吗? https://itextpdf.com/itext7/pdfcalligraph

如果是,那么您是具有支持合同的iText客户,我建议您直接联系iText软件。

如果不是:您需要pdfCalligraph来使用像Tibt这样的复杂书写系统的OpenType功能。请参阅链接网站上的扩展示例。 因为我没有看到你在代码中加载许可证密钥,所以我认为是这种情况。

如果pdfCalligraph尚不支持您的特定语言,我们会尽快添加。但是从我的头脑中我认为大多数印度语都是支持的。您可以在https://pages.itextpdf.com/itext-7-free-trial-landing-page-1.html

申请30天免费试用许可

完全披露:我是iText Software的QA工程师。