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?
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?
Antworten:
Ich bin über dieses Problem gestolpert und keine der hier gegebenen Antworten hat für mich funktioniert. Was tat Arbeit das war rewritepdf
Werkzeug 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
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 /Annots
Befehle 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.
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 g
ersetzen ) (bei Bedarf mehrmals pro Zeile ersetzen).
]
normalerweise maskiert werden muss, jedoch nicht direkt nach einer ^
Negation.
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:
PATH
), zB /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
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.exe
mitgelieferten 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
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.