我是pdfbox的新手,我想提取一个段落,匹配一些特定的单词,我能够提取整个pdf到文本(记事本),但我不知道如何提取特定的段落到我的java程序。有没有人可以帮我至少一些教程或者examples.Thank你这么多
发布于 2012-02-27 16:53:10
PDF文档中的文本是绝对定位的。因此,只有绝对定位的字符,而不是单词、行和段落。
假设你有一段话:
Neque porro quisquam est qui dolorem ipsum quia dolor坐下amet,consectetur,adipisci velit
粗略地说,在PDF文件中,它将被表示为字符N
在某个位置,e
在它的右边,q
,u
,e
在右边,等等。
PDFBox尝试猜测字符是如何组成单词、行和段落的。因此,它将在大致相同的垂直位置查找大量字符,查找彼此接近和相似的字符组,以尝试找到您需要的字符。它通过从整个页面中提取文本,然后逐个字符地对其进行处理来创建文本(它还可以尝试从页面中的一个矩形区域提取文本)。请参阅相应的类PDFTextStripper (或PDFTextStripperByArea)。有关用法,请参阅PDFBox源代码中的ExtractText.java
。
这意味着您不能使用PDFBox轻松提取段落。这也意味着,在提取文本时,PDFBox可能会并且有时会错过(有很多非常不同的PDF文档)。
您可以做的是从整个页面中提取文本,然后尝试通过搜索该文本来查找您的段落。Regular expressions通常非常适合于这样的任务(在Java中可以通过Pattern和Matcher类使用,或者在String类上使用方便的方法)。
发布于 2017-01-26 20:14:01
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
发布于 2013-04-08 02:15:43
我已经使用下面的方法检测到了段落的开头。逐行阅读这一页。对于每行:-
希望这能有所帮助。
https://stackoverflow.com/questions/9451312
复制相似问题