gpt4 book ai didi

java - PDFBox - 2.0.3 - PDFTextStripper 在裁剪/旋转之前从页面中拾取旧文本

转载 作者:行者123 更新时间:2023-11-30 02:21:39 29 4
gpt4 key购买 nike

我正在尝试通过使用 Apache PDFBox 对文件中的各个 PDF 页面执行一些字符串验证。

我将使用 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 - 它似乎不仅返回我想要的页面的文本,还返回我从中裁剪出来的页面的文本。

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

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

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

p.s - 我还没有发布我的代码,因为它基本上是上述链接中提供的解决方案的合并 - 但是如果我需要,我可以提供

最佳答案

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

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

(不幸的是,这些区域必须使用与 CropBox 使用的坐标系不同的坐标系来定义,因此通常您必须首先转换坐标。)

关于java - PDFBox - 2.0.3 - PDFTextStripper 在裁剪/旋转之前从页面中拾取旧文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46655271/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com