批量删除 PDF 文件中的注释

批量删除 PDF 文件中的注释

如何轻松删除文件夹中所有 PDF 中的所有注释和注解(使用 Foxit Reader 添加)?

答案1

我刚刚遇到这个问题,这里给出的答案都不适合我。什么做过work 是rewritepdf来自 Ubuntu 软件包的工具libcam-pdf-perl

rewritepdf -C in.pdf out.pdf

将其包装成一个小脚本来删除目录中所有 pdf 文件的注释现在很容易:

for i in *.pdf; do rewritepdf -C '$i' '$i'.new; done

与往常一样,您可以libcam-pdf-perl通过软件中心或使用sudo apt install libcam-pdf-perl

答案2

假设你使用的是Unix系统:

cd <directory containing PDFs>
find . -type f -name '*.pdf' -exec perl -pi -e 's:/Annots \[[^]]+\]::g' {} +

这是一个 hack,它删除了/AnnotsPDF 中的所有命令(绘制注释的命令)。它保留注释对象(您可以使用文本编辑器打开 PDF 并搜索它们),只是不绘制它们。

答案3

还没有进行过大量测试,但下面的方法似乎有效。它会删除所有注释,除了内部文档链接(这里的答案似乎都没有做到这一点)。此脚本依赖于pdfrwpython 库。

#!/usr/bin/python

import sys, pdfrw

try:
    in_path = sys.argv[1]
    out = sys.argv[2]
except:
    print("Usage:\tannotclean IN.pdf OUT.pdf")
    exit(0)

reader = pdfrw.PdfReader(in_path)

for p in reader.pages:
    if p.Annots:
        # See PDF reference, Sec. 12.5.6 for all annotation types
        p.Annots = [a for a in p.Annots if a.Subtype == "/Link"]

pdfrw.PdfWriter(out, trailer=reader).write()

用法:

  1. 将其作为脚本保存在某处(我假设在您的PATH),例如/usr/local/bin/annotclean
  2. annotclean in.pdf cleaned.pdf
  3. (可选)批处理:
# fish shell syntax
for p in **pdf # pdfs from current directory and subdirectories
    annotclean $p $p.new
    mv $p.new $p # overwrite the old
end 

答案4

好的,您说您还会考虑商业解决方案……

我建议你尝试一下callas pdf工具箱。它适用于 Windows 和 Mac OS X。(它们也有一个适用于 Linux 的 CLI,但您只能使用预配置的“配置文件”。但是,使用 Windows GUI,您可以创建自定义配置文件并在 Linux CLI 中重新使用它们。

pdfToolbox 有很多很多方法来操作和修复很多很多单独的 PDF 问题。

其中一个“修复”是删除所有注释。

您不需要花任何钱来先测试它;callas 免费提供 14 天的试用许可证。

相关内容