Comment supprimer facilement tous les commentaires et annotations (ajoutés avec Foxit Reader) de tous les PDF d'un dossier?
Comment supprimer facilement tous les commentaires et annotations (ajoutés avec Foxit Reader) de tous les PDF d'un dossier?
Réponses:
Je suis juste tombé sur ce problème, et aucune des réponses données ici n'a fonctionné pour moi. Ce qui a fonctionné, c'est l' rewritepdf
outil du package Ubuntu libcam-pdf-perl
:
rewritepdf -C in.pdf out.pdf
Envelopper cela dans un petit script pour supprimer les annotations de tous les fichiers pdf d'un répertoire est maintenant facile:
for i in *.pdf; do rewritepdf -C '$i' '$i'.new; done
À condition que vous soyez sur un système Unix:
cd <directory containing PDFs>
find . -type f -name '*.pdf' -exec perl -pi -e 's:/Annots \[[^]]+\]::g' {} +
Il s'agit d'un hack qui supprime toutes les /Annots
commandes du PDF (les commandes qui dessinent les annotations). Il laisse les objets d'annotation là (vous pouvez ouvrir le PDF avec un éditeur de texte et les rechercher), ils ne sont tout simplement pas dessinés.
s:
(substitut) /Annots \[
(le texte " /Annots [
") [^]]+
(une ou plusieurs instances de n'importe quel caractère en plus de " ]
") \]
(le caractère littéral " ]
") ::
(remplacez tout ce qui correspond à l'ancien par rien) g
(remplacez plusieurs fois par ligne si nécessaire).
]
doit normalement être échappé, mais pas juste après une ^
négation.
Je ne l'ai pas beaucoup testé, mais ce qui suit semble fonctionner. Il supprime toutes les annotations, à l' exception des liens de document internes (ce qu'aucune des réponses ne semble faire ici). Ce script dépend de la bibliothèque 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()
Usage:
PATH
), par exemple /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
Je pense que vous pouvez le faire plus facilement en "refryant" le PDF. Refrying signifie d'abord convertir le fichier en PostScript, puis reconvertir le PostScript en PDF. Le refrying est généralement mal vu, car vous perdez généralement de la qualité et du contenu. Dans votre cas, vous souhaitez perdre le contenu. La nouvelle friture peut être effectuée avec Ghostscript (et les fichiers de commandes auxiliaires livrés avec - téléchargez le gs900w32.exe
si vous êtes sous Windows), alors voilà, avec 2 commandes simples:
pdf2ps.bat input.pdf output.ps
ps2pdf.bat output.ps input_refried.pdf
OK, vous avez dit que vous envisageriez également une solution commerciale ...
Je vous recommande d'essayer callas pdfToolbox . Il est disponible pour Windows et Mac OS X. (Ils ont également une CLI pour Linux, mais vous ne pouvez utiliser que des "profils" préconfigurés avec. Avec l'interface graphique Windows, vous pouvez créer vos profils personnalisés et les réutiliser avec la CLI Linux, cependant.
La pdfToolbox a beaucoup, beaucoup et beaucoup de façons de manipuler et de résoudre de nombreux problèmes PDF individuels.
L'un des "Fixups" consiste à supprimer toutes les annotations.
Vous n'avez pas besoin de débourser de l'argent pour le tester en premier; callas offre gratuitement des licences d'essai de 14 jours.