首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PDFBox提取段落

PDFBox提取段落
EN

Stack Overflow用户
提问于 2012-02-26 15:25:15
回答 6查看 14.4K关注 0票数 15

我是pdfbox的新手,我想提取一个段落,匹配一些特定的单词,我能够提取整个pdf到文本(记事本),但我不知道如何提取特定的段落到我的java程序。有没有人可以帮我至少一些教程或者examples.Thank你这么多

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-02-27 16:53:10

PDF文档中的文本是绝对定位的。因此,只有绝对定位的字符,而不是单词、行和段落。

假设你有一段话:

Neque porro quisquam est qui dolorem ipsum quia dolor坐下amet,consectetur,adipisci velit

粗略地说,在PDF文件中,它将被表示为字符N在某个位置,e在它的右边,que在右边,等等。

PDFBox尝试猜测字符是如何组成单词、行和段落的。因此,它将在大致相同的垂直位置查找大量字符,查找彼此接近和相似的字符组,以尝试找到您需要的字符。它通过从整个页面中提取文本,然后逐个字符地对其进行处理来创建文本(它还可以尝试从页面中的一个矩形区域提取文本)。请参阅相应的类PDFTextStripper (或PDFTextStripperByArea)。有关用法,请参阅PDFBox源代码中的ExtractText.java

这意味着您不能使用PDFBox轻松提取段落。这也意味着,在提取文本时,PDFBox可能会并且有时会错过(有很多非常不同的PDF文档)。

您可以做的是从整个页面中提取文本,然后尝试通过搜索该文本来查找您的段落。Regular expressions通常非常适合于这样的任务(在Java中可以通过PatternMatcher类使用,或者在String类上使用方便的方法)。

票数 15
EN

Stack Overflow用户

发布于 2017-01-26 20:14:01

代码语言:javascript
运行
复制
public static void main(String[] args) throws InvalidPasswordException, IOException {
    File file = new File("File Path");
    PDDocument document = PDDocument.load(file);        
    PDFTextStripper pdfStripper = new PDFTextStripper();
    pdfStripper.setParagraphStart("/t");
    pdfStripper.setSortByPosition(true);


    for (String line: pdfStripper.getText(document).split(pdfStripper.getParagraphStart()))
            {
                System.out.println(line);
                System.out.println("********************************************************************");
            }
}

伙计们,请试试上面的代码。这肯定适用于PDFBox-2.0.8 Jar

票数 2
EN

Stack Overflow用户

发布于 2013-04-08 02:15:43

我已经使用下面的方法检测到了段落的开头。逐行阅读这一页。对于每行:-

  1. 查找‘’的最后一个索引行中的(句点)。
  2. 将此索引与输入行的长度进行比较。
  3. 如果索引小于,则表示这不是上一段的结尾。
  4. 如果是,则表示上一段已结束,下一行将是新段落的开始。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9451312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档