从 pdf 中删除文本

从 pdf 中删除文本

我有一个 pdf 文件,每页都有一些文本,我想删除它们。

该文本与正则表达式匹配,我认为它出现在pdf的一个块中。

我已经使用 pdfedit 通过 GUI 选择和删除文本,但我正在寻找一种从终端执行此操作的方法。

答案1

你可以试试pdftk,但由于(我认为)字体问题,它只能在一小部分时间内起作用。

它的工作原理是这样的:首先你需要解压缩pdf文件,

  pdftk myfile.pdf output unc.pdf uncompress

然后你用

  sed 's/oldstring/newstring/g' < unc.pdf > mod_unc.pdf

最后你用

 pdftk mod_unc.pdf output myfile_modified.pdf compress

我对这个命令的成功率并不高,有时候它会起作用,有时候则不起作用,这取决于它自己的意愿。

答案2

在 Windows(可能是虚拟机)上,您可以安装 PDF-XChange Editorhttps://www.tracker-software.com/product/downloads/enduser/pdf-xchange-editor

在免费版本中可以删除文本(但不能添加文本)而不添加水印(软件的水印,甚至软件也会告诉您)。

我不得不删除一些文本,因此sed太耗时/费力,并且sed无法处理变音符号。

来源:https://de.wikipedia.org/wiki/Benutzer:JoKalliauer/PDF

答案3

inkscape 1.2 增加了对 (导入/导出) 的支持多页PDF 加上其良好的 pdf 对象支持,它完成了工作

答案4

要使用命令行删除 PDF 中的现有文本,您必须试图用空值或空格替换字符,以便将文本 XY 位置保持在其自包含的行中(PDF 中通常没有换行)。

如果字节数发生变化,则文件很可能会被破坏,因为它取决于字节偏移量的索引。此外,许多文本都是压缩的,因此不容易以纯文本形式找到。

由于上述所有原因,需要使用可以“修复”编辑后字节数的应用程序来解压缩字体。

因此 qpdf 采用 QDF 模式并修复了 QDF是经常提到的“去”答案。

对于添加文本,还存在其他问题。例如,已包含的字体字符可能不包含其字体中的所有字符子集。因此,新文本需要确保使用自己的字体。最简单的方法是在空白页上所需的 XY 位置上写新文本,然后用新字体包含的字符覆盖原始页面。

在将现有文本替换为空格字符后,使用 qpdf 也可以实现这一点。

如果 qpdf 方法效果不佳,您需要升级到完全由命令驱动的编辑器,例如 PyMuPDF 或基于 Java 的脚本编辑器,例如 Apache PDFBox。

相关内容