如何从PDFBox 2.0.2中的PDDocument中提取字体

问题描述 投票:0回答:4

我已经在以前的版本中看到了如何执行此操作,如下所示:

如何使用pdfbox提取文本内容的字体样式?

但我认为 getFonts() 方法现在已被删除。我想在新版本的 PDFBox 中检索文本到字体的映射 (

Map<String, PDFont>
),但我不知道如何操作。

谢谢

卡比尔

java pdf fonts pdfbox
4个回答
10
投票

这样做:

PDDocument doc = PDDocument.load("C:/mydoc3.pdf");
for (int i = 0; i < doc.getNumberOfPages(); ++i)
{
    PDPage page = doc.getPage(i);
    PDResources res = page.getResources();
    for (COSName fontName : res.getFontNames())
    {
        PDFont font = res.getFont(fontName);
        // do stuff with the font
    }
}

请注意,这是一个非常简单的问题解决方案,它仅适用于顶层。 xobject 形式、图案、软掩码等可能有更多字体。


3
投票
 PDFMetaData pdfMeta = new PDFMetaData();
 PDDocument document = PDDocument.load(new File("/Users/ban.pdf"));
 PDPage page = document.getPage(0);
 PDResources res = page.getResources();
 for (COSName fontName : res.getFontNames())
{
  PDFont font = res.getFont(fontName);
  pdfMeta.setFontName(font);                    
}

1
投票

对于 PDFBox 2.x,您链接到的答案的修订代码是

PDDocument  doc = PDDocument.load("C:/mydoc3.pdf");
for(PDPage page : doc.getPages()){
    // get the names of the fonts in the resources dictionary
    Iterable<COSName> iterable = page.getResources().getFontNames();
    // to get the font for each item call
    // page.getResources().getFont(COSName name);
}

-2
投票

这个是使用pdfbox 2.0.6提取Pdf文件的字体。

import java.io.File;
import java.util.List;
import java.util.Map;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.font.PDFont;
public class PDFFontExtractor {
    public static void main(String args[])
    {
        try
        {  
            PDDocument pddDocument = PDDocument.load(new File("C:\\Users\\Desktop\\sample1.pdf"));
            for (int i = 0; i < pddDocument.getNumberOfPages(); ++i)
            {
                PDPage page = pddDocument.getPage(i);
                PDResources res = page.getResources();
                for (COSName fontName : res.getFontNames())
                {
                    PDFont font = res.getFont(fontName);
                    System.out.println("FONT :: "+ font);
                }
            } 
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.