Come posso rimuovere facilmente tutti i commenti e le annotazioni (aggiunti con Foxit Reader) da tutti i PDF in una cartella?
Come posso rimuovere facilmente tutti i commenti e le annotazioni (aggiunti con Foxit Reader) da tutti i PDF in una cartella?
Risposte:
Sono appena caduto su questo problema e nessuna delle risposte fornite qui ha funzionato per me. Ciò che ha funzionato è stato lo rewritepdf
strumento dal pacchetto Ubuntu libcam-pdf-perl
:
rewritepdf -C in.pdf out.pdf
Avvolgere questo in un piccolo script per rimuovere le annotazioni da tutti i file pdf in una directory è ora facile:
for i in *.pdf; do rewritepdf -C '$i' '$i'.new; done
A condizione che tu sia su un sistema Unix:
cd <directory containing PDFs>
find . -type f -name '*.pdf' -exec perl -pi -e 's:/Annots \[[^]]+\]::g' {} +
Questo è un trucco che rimuove tutti i /Annots
comandi dal PDF (i comandi che disegna le annotazioni). Lascia lì gli oggetti delle annotazioni (puoi aprire il PDF con un editor di testo e cercarli), non sono semplicemente disegnati.
s:
(sostituto) /Annots \[
(il testo " /Annots [
") [^]]+
(una o più istanze di qualsiasi carattere oltre a " ]
") \]
(il carattere letterale " ]
") ::
(sostituisci qualsiasi cosa che corrisponda alla prima con nulla) g
(sostituisci più volte per riga se necessario).
]
deve normalmente essere evaso, ma non subito dopo una ^
negazione.
Non l'ho testato molto, ma quanto segue sembra funzionare. Elimina tutte le annotazioni, tranne i collegamenti ai documenti interni (che nessuna delle risposte qui sembra fare). Questo script dipende dalla libreria 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()
Uso:
PATH
), ad es /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
Penso che tu possa farlo più facilmente "aggiornando" il PDF. Aggiornamento significa: prima convertire il file in PostScript, quindi convertire il PostScript in PDF. Di solito è poco gradito rinfrescarsi, perché di solito perdi qualità e contenuto. Nel tuo caso, vuoi perdere il contenuto. Il re-frittura può essere fatto con Ghostscript (e i file batch dell'helper forniti con esso - scarica il gs900w32.exe
se sei su Windows), quindi eccoti qui, con 2 semplici comandi:
pdf2ps.bat input.pdf output.ps
ps2pdf.bat output.ps input_refried.pdf
OK, hai detto che avresti considerato anche una soluzione commerciale ...
Ti consiglierei di provare callas pdfToolbox . È disponibile per Windows e Mac OS X. (Hanno anche una CLI per Linux, ma puoi utilizzare solo "profili" preconfigurati. Con la GUI di Windows puoi creare i tuoi profili personalizzati e riutilizzarli con l'interfaccia della riga di comando di Linux, tuttavia.
PdfToolbox offre moltissimi modi per manipolare e risolvere molti, molti singoli problemi PDF.
Uno dei "Fixup" è rimuovere tutte le annotazioni.
Non è necessario sborsare denaro per testarlo prima; callas rilascia gratuitamente licenze di prova di 14 giorni.