【发布时间】:2020-04-23 13:04:40
【问题描述】:
我正在尝试做一些我知道不是 100% 可靠的事情,但我已经阅读过它,并且据我了解,我在尝试从PDF文件是我无法替换它们。
我想要做的是获取 PDF 文件的内容,然后将该内容复制到另一个 PDF 文件,但没有找到正则表达式。 我在我的 PDF 文件中找到了表达式,并且它有效。
但是,我想不出删除它们的方法。有没有办法说类似
// Remove all TextPosition objects that are within this list
因为我已经收集了它们,但我不明白为什么这不起作用。
或者有没有办法覆盖写入新文件的内容,然后让该覆盖的方法跳过我告诉它跳过的所有文本位置?我见过这样的例子,但当我尝试它们时似乎没有一个有效。 (事实上,很多被覆盖的方法甚至似乎根本没有被调用)
【问题讨论】:
-
“我不明白为什么这不起作用” - 这至少很难的一个原因是,在 PDF 中没有
TextPosition对象.在 PDF 中,您可以找到以任意编码绘制字符串的说明。 PDFBox 解析机制将这些字符串拆分为单个字符,确定它们的位置等,并从中构建一个TextPosition。不幸的是,它没有添加对原始字符串和其中字符位置的引用。因此,为了使代码能够识别 PDF 中匹配的字符串部分,它必须再次进行所有解析并在复制之前进行比较 -
因此,要实现您的目标,您最好不仅使用
TextPosition对象,而且还要以某种方式将它们链接回它们所来自的字符串。 -
我明白了。我实际上已经看了很多你的例子,它们真的很好。我可能完全不在这里,但我在任何地方都找不到很多文档。我得到的最好的信息是你的例子和其他一些例子,但我想要更多的例子和解释。 (另外,我知道 Apache 删除了整个替换文本位,因为它非常复杂)我正在攻读这个(以及更多)的学士学位,所以这就是我正在寻找的原因。
-
我实际上正在使用 HelloAnalyzer 查看您的示例,而您的示例根本不适用于我的 PDF。但我真正需要的是对这些运营商的一些好的指导。我无法像您那样添加运算符,它只是不会添加,因此我的 ContentStreamWriter 为空。
-
来自this answer 的
HelloAnalyzer和HelloSignManipulator使用了相关文档内容的一种非常特殊的结构,它们作为通用文本编辑的模板并不真正有用。