我最近开始使用PDFBox处理一些PDF文件。我成功加载了Roboto字体,但是,我不理解PDType0Font,PDType1Font和PDTrueTypeFont之间的区别。哪个更好用?
致谢
答案 0 :(得分:1)
如果要使用标准的14种字体(时间,helvetica,信使,符号,zapf dingbats)=>使用PDType1Font.HELVETICA
等(仅支持WinAnsiEncoding)
如果您的计算机上具有type1字体,并且想要使用这些字体,请使用PDType1Font构造函数。
如果您想以低效的方式使用TrueType字体(仅256个字形,没有子设置)=>请使用PDTrueTypeFont.load()
。
如果您想以有效的方式使用TrueType字体(超过256个字形,子设置)=>请使用PDType0Font.load()
。您可以并且应该为整个PDF使用相同的字体对象,即不要为每个页面创建一个新的PDFont对象。
如果要使用TrueType集合,请执行以下操作:
TrueTypeCollection ttc = new TrueTypeCollection(new File("C:/windows/fonts/mingliu.ttc"));
PDFont font = PDType0Font.load(doc, ttc.getFontByName("MingLiU"));
...
ttc.close(); // only after PDF has been saved