批量删除PDF文件中的注释


Answers:


7

我只是解决了这个问题,这里给出的答案对我都不起作用。什么的工作是rewritepdf从Ubuntu的软件包工具libcam-pdf-perl

rewritepdf -C in.pdf out.pdf

现在,将其包装成一个小的脚本即可从目录中的所有pdf文件中删除注释:

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

它工作正常。:)有一些帮助:Ubuntu(即debian)软件包在这里packages.debian.org/sid/perl/libcam-pdf-perl 依赖关系是使用“ Ubuntu软件中心”自动安装的。(哦,小心大写的“ -C”。我首先运行“ -c”,什么都没发生,甚至没有输出错误。)
love.by.Jesus

5

为您提供一个Unix系统:

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

这是一种可/Annots从PDF 中删除所有命令(绘制注释的命令)的黑客。它将注释对象留在那里(您可以使用文本编辑器打开PDF并搜索它们),只是未绘制它们。


您能解释一下RE吗?[^]] +匹配什么
jftuga 2012年

1
@jftuga,s:(代替)/Annots \[(文本“ /Annots [”)[^]]+(除“ ]” 之外的任何字符的一个或多个实例)\](文字字符“ ]”)::(将与前者匹配的任何内容替换为空)g(如有必要,每行替换多次)。
Divinenephron,2012年

1
正则表达式的一个可能令人困惑的部分是,]通常必须转义文字,但在^取反后不立即转义。
Divinenephron,2012年

这也会删除内部文档链接(因为我相信这些链接也以pdf的形式/ Annots实现)
Alec Jacobson,

3

尚未对其进行大量测试,但以下方法似乎可行。它会删除所有注释,内部文档链接除外(此处似乎没有答案)。该脚本取决于pdfrw python库。

#!/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 

2

认为您可以通过“重新引用” PDF来最轻松地做到这一点。引用方法:首先将文件转换为PostScript,然后将PostScript转换回PDF。通常拒签是不受欢迎的,因为通常您会失去质量和某些内容。在您的情况下,您松散内容。可以使用Ghostscript(以及它附带的帮助程序批处理文件- gs900w32.exe如果您在Windows上,请下载)进行重新油炸,因此,您可以使用2个简单的命令:

pdf2ps.bat input.pdf output.ps
ps2pdf.bat output.ps input_refried.pdf

1
这行不通。保留书面注释(不是注释,而是pdf的一部分)。
安德鲁(Andrew)2010年

2
如果注释实际上已添加到PDF的内容,则只能手动将其删除。实际的PDF注释是单独的。
CarlF 2010年

有没有不用任何转换器的方法吗?
用户

这也会删除内部文档链接。
亚历克·雅各布森

@AlecJacobson:当然可以。如果转换为PostScript,则会丢失很多PDF内容的“丰富”内容。的PostScript没有办法代表任何联系,甚至没有内部文件链接....
库尔特Pfeifle

2

好的,您说过您还将考虑商业解决方案。

我建议您尝试使用callas pdfToolbox。它可用于Windows和Mac OSX。(它们也具有Linux的CLI,但是您只能将其与预配置的“配置文件”一起使用。使用Windows GUI,您可以创建自定义配置文件并在以下情况下重复使用它们:但是,Linux CLI。

pdfToolbox有很多很多方法可以处理和修复许多单独的PDF问题。

“修复程序”之一是删除所有注释。

您无需先花任何钱就可以对其进行测试;卡拉斯免费提供14天试用许可证。


它确实确实有一种删除所有注释的方法,但是我不确定如何执行批处理作业。
安德鲁(Andrew)2010年

说不上关于以前的版本---但最新pdfToolbox5版本允许在批处理模式下运行.....针对它含有完整的PDF文件的文件夹
库尔特Pfeifle
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.