我在使用 PDFBox 3.0 时遇到了 PDFBox 2 中不会出现的问题。以加载的 TTF 字体显示文本时,所有出现的字符串“ft”都会被替换为“”。我已将范围缩小到字体文件中缺少“ft”的连字。在以前的版本中,这只会打印“ft”,但在 3.0 中,这现在是空白区域。有什么方法可以关闭字体的连字或后备,以便文本可以正确打印吗?
代码示例:
PDFont font = PDType0Font.load(doc, getClass().getResourceAsStream(PATH_TO_FONT));
contentStream.setFont(font, 20);
contentStream.beginText();
contentStream.showText("This is a gift message. f t.");
contentStream.endText();
这将显示“这是一条 gi 消息。” ft.'在 PDF 上。 (这与内置字体配合得很好。)
我也尝试过以下方法但没有成功:
TrueTypeFont ttf = new TTFParser().parse(...);
ttf.disableGsubFeature("liga");
PDFont font = PDType0Font.load(doc, ttf, false);
在 3.0.3 中可以作为 PDFBOX-5808 中不相关补丁的一部分。 必须通过调用
在 TrueTypeFont 级别将其关闭TrueTypeFont ttf = new TTFParser().parse(new RandomAccessReadBufferedFile("c:/windows/fonts/calibri.ttf"));
ttf.setEnableGsub(false);
PDFont font = PDType0Font.load(doc, ttf, true);
关闭文档后,请不要忘记致电
ttf.close()
。
您可以通过下载快照版本来测试它: https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/pdfbox-app/3.0.3-SNAPSHOT/