Batch entfernen Kommentare aus PDF-Dateien

18

Wie kann ich auf einfache Weise alle Kommentare und Anmerkungen (die mit Foxit Reader hinzugefügt wurden) aus allen PDF-Dateien in einem Ordner entfernen?

Andrew
quelle
1
Ist es eine berechtigte Annahme, dass Sie nur Vorschläge für kostenlose (wie in Bier) oder kostenlose (wie in Freiheit) Lösungen wünschen?
Kurt Pfeifle
@pipitas Ich interessiere mich für jede Art von Lösung.
Andrew

Antworten:

7

Ich bin über dieses Problem gestolpert und keine der hier gegebenen Antworten hat für mich funktioniert. Was tat Arbeit das war rewritepdfWerkzeug aus dem Ubuntu - Paket libcam-pdf-perl:

rewritepdf -C in.pdf out.pdf

Es ist jetzt ganz einfach, dies in ein kleines Skript zu packen, um Anmerkungen aus allen PDF-Dateien in einem Verzeichnis zu entfernen:

for i in *.pdf; do rewritepdf -C '$i' '$i'.new; done
Uli Fahrenberg
quelle
Es hat gut funktioniert. :) Hilfe: Das Ubuntu (dh Debian) -Paket finden Sie hier packages.debian.org/sid/perl/libcam-pdf-perl Abhängigkeiten werden automatisch über das "Ubuntu Software Center" installiert. (Oh, und pass auf mit dem Großbuchstaben "-C". Ich habe zuerst "-c" ausgeführt und nichts ist passiert, auch kein Fehler wurde ausgegeben.)
loved.by.Jesus
5

Vorausgesetzt, Sie arbeiten auf einem Unix-System:

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

Dies ist ein Hack, der alle /AnnotsBefehle aus dem PDF entfernt (die Befehle, die die Anmerkungen zeichnen). Die Anmerkungsobjekte bleiben dort (Sie können die PDF-Datei mit einem Texteditor öffnen und danach suchen), sie werden nur nicht gezeichnet.

Divinenephron
quelle
Können Sie den RE erklären? Was bedeutet [^]] + match
jftuga
1
@jftuga, s:(Ersatz) /Annots \[(der Text " /Annots [") [^]]+(eine oder mehrere Instanzen eines beliebigen Zeichens außer " ]") \](das wörtliche Zeichen " ]") ::(alles, was mit dem ersteren übereinstimmt, durch nichts gersetzen ) (bei Bedarf mehrmals pro Zeile ersetzen).
Divinenephron
1
Ein möglicherweise verwirrender Teil des regulären Ausdrucks besteht darin, dass ein Literal ]normalerweise maskiert werden muss, jedoch nicht direkt nach einer ^Negation.
Divinenephron
Dadurch werden auch interne Dokumentverknüpfungen entfernt (wie ich glaube, auch in einem PDF als / Annots implementiert)
Alec Jacobson
3

Habe es nicht viel getestet, aber das Folgende scheint zu funktionieren. Es werden alle Anmerkungen mit Ausnahme der internen Dokumentverknüpfungen gelöscht (die hier offenbar nicht beantwortet werden). Dieses Skript hängt von der Python-Bibliothek pdfrw ab .

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

Verwendung:

  1. Speichere als Skript irgendwo (nehme ich in deinem an PATH), zB /usr/local/bin/annotclean.
  2. annotclean in.pdf cleaned.pdf
  3. (optional) Stapelverarbeitung:
# 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 
rien333
quelle
2

Ich denke, Sie können dies am einfachsten tun, indem Sie das PDF "auffrischen". Refrying bedeutet: Zuerst die Datei in PostScript konvertieren, dann das PostScript wieder in PDF konvertieren. Normalerweise wird das Auffrischen verpönt, weil normalerweise Qualität und Inhalt verloren gehen. In Ihrem Fall möchten Sie den Inhalt verlieren. Das Nachbraten kann mit Ghostscript erfolgen (und die gs900w32.exemitgelieferten Hilfsprogrammdateien - laden Sie die herunter, wenn Sie unter Windows arbeiten). Hier sind also zwei einfache Befehle:

pdf2ps.bat input.pdf output.ps
ps2pdf.bat output.ps input_refried.pdf
Kurt Pfeifle
quelle
1
Das geht nicht. Eingeschriebene Kommentare bleiben erhalten (nicht als Kommentare, sondern als Teil des PDF).
Andrew
2
Wenn die Kommentare tatsächlich zum Inhalt der PDF-Datei hinzugefügt werden, können sie nur manuell entfernt werden. Aktuelle PDF-Anmerkungen sind separat.
CarlF
Gibt es eine Möglichkeit ohne Konverter?
Benutzer
Dadurch werden auch interne Dokumentverknüpfungen entfernt.
Alec Jacobson
@ AlecJacobson: Natürlich. Wenn Sie nach PostScript konvertieren, verlieren Sie einen Großteil des "reichen" Inhalts, der Bestandteil von PDF war. PostScript verfügt nicht über die Mittel, um beliebige Links darzustellen, nicht einmal interne Dokumentenlinks ....
Kurt Pfeifle
2

OK, Sie sagten, Sie würden auch eine kommerzielle Lösung in Betracht ziehen ...

Ich würde empfehlen, dass Sie callas pdfToolbox ausprobieren . Es ist für Windows und Mac OS X verfügbar. (Sie haben auch eine CLI für Linux, aber Sie können nur vorkonfigurierte "Profile" damit verwenden. Mit der Windows-GUI können Sie Ihre benutzerdefinierten Profile erstellen und mit wiederverwenden die Linux-CLI.

Die pdfToolbox bietet eine Vielzahl von Möglichkeiten, um viele, viele individuelle PDF-Probleme zu bearbeiten und zu beheben.

Eine der "Korrekturen" besteht darin, alle Anmerkungen zu entfernen.

Sie müssen kein Geld berappen, um es zuerst zu testen. callas vergibt 14-tägige Testlizenzen kostenlos.

Kurt Pfeifle
quelle
Es gibt zwar eine Möglichkeit, alle Anmerkungen zu entfernen, aber ich bin mir nicht sicher, wie ich einen Stapeljob ausführen soll.
Andrew
Keine Ahnung von früheren Versionen --- aber die neueste Version von pdfToolbox5 ermöglicht es, es im Batch-Modus für vollständige Ordner mit PDFs auszuführen .....
Kurt Pfeifle