【问题标题】:PDFBOX, Reading a pdf line by line and extracting text propertiesPDFBOX,逐行读取pdf并提取文本属性
【发布时间】:2014-12-21 16:08:45
【问题描述】:

我正在使用 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 库实现这一目标

【问题讨论】:

    标签: pdfbox


    【解决方案1】:

    从每一行中提取文本属性,例如粗体、斜体。如何使用 pdfbox 库实现这一目标

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

    Bolditalic 在 PDF 中的书写是使用

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

      来确定字体是粗体还是斜体
      • 查看字体名称:它可能包含子字符串“bold”、“italic”、“oblique”...

      • 查看字体的一些可选属性,例如字体粗细...

      • 检查嵌入的字体文件。

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

    • 使用与非粗体、非斜体文本相同的字体,但使用特殊技术使其显示为粗体或斜体(又名穷人的粗体),例如

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

      • 绘制字形两次,第二次稍微移位,也是为了给人一种大胆的印象,

      • 使用文本或转换矩阵来倾斜字母以获得斜体印象。

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

    【讨论】:

    • 忘记粗体,斜体,每行一秒钟,那么如何逐行阅读?
    • OP 使用的PDFTextStripper 使用识别行之间的系统行分隔符提取页面内容。你可以split他们。
    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多