回答:
私はちょうどこの問題を乗り越えました、そして、ここで与えられた答えのどれも私のために働きませんでした。何やった仕事だったrewritepdf
Ubuntuのパッケージからツールlibcam-pdf-perl
:
rewritepdf -C in.pdf out.pdf
これを小さなスクリプトにラップして、ディレクトリ内のすべてのpdfファイルから注釈を削除するのが簡単になりました。
for i in *.pdf; do rewritepdf -C '$i' '$i'.new; done
Unixシステムを使用している場合:
cd <directory containing PDFs>
find . -type f -name '*.pdf' -exec perl -pi -e 's:/Annots \[[^]]+\]::g' {} +
これは/Annots
、PDFからすべてのコマンド(注釈を描画するコマンド)を削除するハックです。注釈オブジェクトはそのまま(テキストエディターでPDFを開いて検索できます)、描画されません。
s:
(substitute)/Annots \[
(テキスト " /Annots [
")[^]]+
( " ]
" 以外の任意の文字の1つ以上のインスタンス)\]
(リテラル文字 " ]
")::
(前者と一致するものは何も置き換えない)g
(必要に応じて1行に複数回置き換えます)
]
は通常エスケープする必要がありますが、^
否定の直後ではないことです。
十分にテストしていませんが、次のように動作するようです。内部ドキュメントリンク(ここでの答えはいずれも実行しないようです)を除くすべての注釈を削除します。このスクリプトは、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()
使用法:
PATH
)/usr/local/bin/annotclean
。annotclean in.pdf cleaned.pdf
# 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
PDFを「再試行」することで最も簡単にできると思います。再試行とは、最初にファイルをPostScriptに変換してから、PostScriptをPDFに戻すことです。通常、品質と一部のコンテンツを失うため、再試行は眉をひそめます。あなたの場合は、コンテンツを失いたいです。再フライはGhostscript(および付属のヘルパーバッチファイルgs900w32.exe
-Windowsを使用している場合はダウンロードしてください)を使用して行うことができるため、次の2つの簡単なコマンドを使用します。
pdf2ps.bat input.pdf output.ps
ps2pdf.bat output.ps input_refried.pdf
OK、あなたは商用ソリューションも検討すると言いました...
callas pdfToolboxを試すことをお勧めします。WindowsおよびMac OS Xで使用できます(LinuxのCLIもありますが、事前に構成された「プロファイル」のみを使用できます。WindowsGUIを使用すると、カスタムプロファイルを作成して再利用できます。ただし、Linux CLI。
pdfToolboxには、個々のPDFの多くの問題を操作および修正するためのたくさんの方法があります。
「修正」の1つは、すべての注釈を削除することです。
最初にテストするためにお金を払う必要はありません。カラスは14日間の試用ライセンスを無料で提供します。