0

我正在使用 PdfTextStripper (PDFBox 1.8.2) 来处理 pdf 文件中的每个 TextPosition。我已经测试了很多文件,我注意到它按阅读顺序处理文本。但是,如果 pdf 有页脚(我导出为 pdf 的 docx),这并不适用。pdfTextStripper 先处理页脚,然后处理文件正文。

这是预期的行为吗?有没有办法可以指定订单?或者有什么方法可以识别它的页脚并且我可以在我的代码中进行调整?

4

1 回答 1

4

PdfTextStripper有一个属性SortByPosition ( getSortByPosition& setSortByPosition)。false默认情况下。

如果此属性本质上是false,按照PdfTextStripper文本在 PDF 页面内容流中出现的顺序提取文本。

这个顺序可能会被完全弄乱(因为在内容流中,您使用的运算符可以将下一个打印文本放置在页面上的任何位置)但通常属于一起的文本部分保持在一起(因为这些部分所需的操作通常插入到该流中作为一个块)。

但是,页眉和页脚通常是同时添加的,因此会一起出现在正文之前或之后。

如果这个属性是true,PdfTextStripper本质上是从上到下,从左到右提取文本(除非阅读顺序被定义为从右到左)。(好吧,好吧,它也尊重文章珠,但你几乎不能指望它们被普遍使用。)

这种顺序在单列文本的情况下很好,并且页眉在前,页脚在后,但除非使用正确的文章珠子,否则多列页面会被弄乱。

ShouldSeparateByBeads顺便说一句,您可以使用属性( getSeparateByBeads& )关闭文章珠子的使用setShouldSeparateByBeads

于 2013-07-19T09:01:39.997 回答