如何使用PDFBOX0.8.0获取pdf嵌入字体
我的代码:
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 页面以获得所有字体吗?
感谢您的回答。
My code:
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);
I got output:
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}
Why the fonts map's key is F0/F1/F2/F6? What these mean?
Should I iterate all pdf pages get all fonts?
Thanks for your answer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您加载的 pdf 似乎加载了多种字体。我想不出任何从文档中检索字体的方法(我认为我们应该可以检索字体,因为我们将字体加载到特定文档中)。
我猜当您将字体加载到文档中时,它会使用“F0”、“F1”等作为映射到 PDFont 类型的键。当您打印字体对象时,它会打印该对象的内存位置。
要获取所有嵌入的字体,您可以创建一个新的 HashMap() 对象,然后迭代所有页面并将每种字体添加到 HashMap() 中。然后您可以迭代这些键,获取 PDFont 字体对象,并使用 font.getSubType() 获取某种字体描述。
希望这有帮助。祝你好运!
It seems like the pdf you loaded has multiple fonts loaded. I couldn't figure out any way to retrieve fonts from a document (which I think should be available for us to retrieve since we load fonts to a particular document).
I'm guessing when you load a font into the document it uses "F0", "F1", etc as keys to map to PDFont type. When you print fonts object, it's printing the memory location of the object.
To get all the embedded fonts, you can create a new HashMap() object, then iterate over all the pages and add each font to your HashMap(). Then you can iterate over the keys, get the PDFont font object and, use font.getSubType() to get some sort of description of the font.
Hope this helps. Good luck!