2017-10-09 28 views
0

我试图通过使用Apache PDFBox对文件中的单个PDF页面执行一些字符串验证。PDFBox - 2.0.3 - PDFTextStripper在裁剪/旋转之前从页面中拾取旧文本

我打算在大多数情况下使用PDFTextStripper,因此我要解决的第一个问题是所有我要验证的PDF都将生成为2up;例如第1页,共2页和第2页,共2页在同一页面上,或者如果您想象您将书本面朝下扫描至扫描仪 - 除此之外,它们的定向不正确,需要旋转90度,因此PDFTextStripper可以读取它们正常。

使用以下问题/解决方案的元素,我已经构建了一种方法,首先将页面裁剪为一半,将裁剪后的页面导出为新文件,将每个页面旋转到正确的方向,然后保存文件;

Rotate PDF around its center using PDFBox in java

Split a PDF page in two parts [duplicate]

在视觉上,我的方法似乎是按预期工作,直到我对它运行PDFTextStripper - 它似乎恢复不只是我想要的网页的文本,但也页I从中出来。

为了确认问题,我从整个文档中提取了一个页面,并将其保存为一个新文件 - 运行PDFTextStripper时,即使我看到的字面上只有一页,仍然可以得到相同的结果。 Adobe搜索不会显示隐藏的遗留数据。

我只能假设,在我的转换方法,我需要重新定义裁剪页面只有裁剪页面的内容。

我的问题是,我该怎么做?

ps的 - 我还没有张贴了我的代码,因为它基本上是在上面的上述链接提供的解决方案的融合 - 但是如果我需要,我可以提供

回答

1

PDFTextStripper忽略裁剪框设置裁剪页面。它还会忽略文本是否被某个填充的矩形或图像覆盖,或者文本是否不可见,它会提取所有文本(文本除外,或者包含在Type 3字体中)。

您可能想尝试使用PDFTextStripperByArea。此类(从PDFTextStripper派生)将自己限制为您可以定义的区域。

(不幸的是,这些地区必须使用不同的坐标系用于裁剪框的一个定义,那么通常你必须首先转换坐标。)

+0

谢谢MKL,我想这和它的确解决了我的问题。 –