我的代码:
FileInputStream pdfFile = new FileInputStream("C:/work/pdf2tiff/test.PDF");
PDDocument pdDocument = PDDocument.load(pdfFile, true);
PDDocumentCatalog catalog = pdDocument.getDocumentCatalog();
List pages = catalog.getAllPages();
if (pages != null && pages.size() > 0) {
for (int i = 0; i < pages.size(); i++) {
PDPage page = (PDPage) pages.get(i);
Map fonts = page.getResources().getFonts();
System.out.println("fonts=" + fonts);
我得到了输出:
字体= {F0=org.apache.pdfbox.pdmodel.font.PDType1Font@8aaed5,
F4=org.apache.pdfbox.pdmodel.font.PDType0Font@dc4414, F2=org.apache.pdfbox.pdmodel.font.PDType0Font@f98ce0, F6=org.apache.pdfbox.pdmodel.font.PDTrueTypeFont@18fcdce}
为什么字体贴图的键是F0 / F1 / F2 / F6?这些是什么意思? 我应该迭代所有pdf页面获取所有字体吗?
感谢您的回答。
答案 0 :(得分:0)
您加载的pdf似乎已加载了多个字体。我无法找出从文档中检索字体的任何方法(我认为应该可以让我们检索,因为我们将字体加载到特定文档)。
我猜测你何时将字体加载到它使用的文档&#34; F0&#34;,&#34; F1&#34;等作为映射到PDFont类型的键。打印字体对象时,它会打印对象的内存位置。
要获取所有嵌入字体,您可以创建一个新的HashMap()对象,然后遍历所有页面并将每个字体添加到HashMap()。然后你可以遍历键,获取PDFont字体对象,并使用font.getSubType()来获得字体的某种描述。
希望这会有所帮助。祝你好运!