web-dev-qa-db-ja.com

PDFファイルからコメントをバッチ削除

フォルダ内のすべてのPDFからすべてのコメントと注釈(Foxit Readerで追加)を簡単に削除するにはどうすればよいですか?

18
Andrew

私はちょうどこの問題に遭遇しました、そしてここで与えられた答えのどれも私のために働きませんでした。何がdid作業は、Ubuntuパッケージのrewritepdfツールでした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をインストールできます。

8
Uli Fahrenberg

Unixシステムを使用している場合:

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

これは、PDF(注釈を描画するコマンド)からすべての/Annotsコマンドを削除するハックです。注釈オブジェクトをそこに残します(PDFテキストエディタでそれらを検索してください)、それらは単に描かれていません。

5
Divinenephron

あまりテストしていませんが、次のように動作するようです。すべての注釈を削除しますexcept内部ドキュメントリンク(ここでの回答はどれも行わないようです)。このスクリプトは 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 
3
rien333

わかりました、あなたは商業的な解決策も検討するだろうと言いました...

callas pdfToolbox を試してみることをお勧めします。 WindowsおよびMacOS Xで使用できます(Linux用のCLIもありますが、使用できるのは事前構成された「プロファイル」のみです。WindowsGUIを使用すると、カスタムプロファイルを作成して、で再利用できます。ただし、LinuxCLI。

PdfToolboxには、個々のPDF問題を解決するための方法がたくさんあります。

「修正」の1つは、すべての注釈を削除することです。

最初にテストするためにお金を払う必要はありません。 callasは14日間のトライアルライセンスを無料で提供します。

2
Kurt Pfeifle

私はthinkPDFを「リフライ」することで最も簡単にそれを行うことができます。再読み込みとは、まずファイルをPostScriptに変換し、次にPostScriptをPDFに戻すことです。通常、品質と一部のコンテンツが失われるため、通常、リフライは眉をひそめます。あなたの場合、あなたはコンテンツを失いたい。再フライは Ghostscript (およびそれと一緒に出荷されるヘルパーバッチファイル-gs900w32.exe Windowsを使用している場合)、2つの簡単なコマンドを使用して次に進みます。

pdf2ps.bat input.pdf output.ps
ps2pdf.bat output.ps input_refried.pdf
2
Kurt Pfeifle