PDFBOX,逐行阅读pdf并提取文本属性

时间:2014-10-26 08:51:34

标签: pdfbox

我正在使用pdfbox从pdf文件中提取文本。我阅读pdf文件如下

    PDFParser parser = null;
    String text = "";
    PDFTextStripper stripper = null;
    PDDocument pdoc = null;
    COSDocument cdoc = null;
    File file = new File("path");

    try {
        parser = new PDFParser(new FileInputStream(file));
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        parser.parse();
        cdoc = parser.getDocument();
        stripper = new PDFTextStripper();
        pdoc = new PDDocument(cdoc);
        stripper.setStartPage(1);
        stripper.setEndPage(2);
        text = stripper.getText(pdoc);
        System.out.println(text);
    } catch (IOException e) {
        e.printStackTrace();
    }

但我想要做的是逐行阅读文档并从每一行中提取文本属性,如粗体,斜体。 如何使用pdfbox库

实现这一目标

1 个答案:

答案 0 :(得分:3)

  

从每一行中提取粗体,斜体等文本属性。如何使用pdfbox库

实现这一目标

粗体和斜体等属性不是PDF中的第一类属性。

使用

实现

粗体斜体以PDF格式书写

  • 不同的字体(这是更好的方式);在这种情况下,可以尝试通过

    确定字体是粗体还是斜体
    • 查看字体名称:它可能包含子字符串"粗体","斜体","倾斜" ...

    • 查看字体的某些可选属性,例如字体重量...

    • 检查嵌入字体文件。

    这些方法都不是万无一失的;或

  • 使用与非粗体,非斜体文本相同的字体,但使用特殊技术使它们显示为粗体或斜体(也就是穷人的粗体),例如

    • 不仅可以填充字形轮廓,还可以沿着它绘制更粗的线条,以获得大胆的印象,

    • 两次绘制字形,第二次略微移位,也是为了大胆的印象,

    • 使用文字或转换矩阵倾斜字母以显示斜体。

通过相应地使用此类测试覆盖PDFTextStripper方法,您可以在PDF文本提取期间获得相当好的样式猜测率。