¿Cómo puedo eliminar fácilmente todos los comentarios y anotaciones (agregados con Foxit Reader) de todos los archivos PDF en una carpeta?
¿Cómo puedo eliminar fácilmente todos los comentarios y anotaciones (agregados con Foxit Reader) de todos los archivos PDF en una carpeta?
Respuestas:
Acabo de caer sobre este problema, y ninguna de las respuestas dadas aquí funcionó para mí. Lo que funcionó fue la rewritepdf
herramienta del paquete de Ubuntu libcam-pdf-perl
:
rewritepdf -C in.pdf out.pdf
Envolver esto en un pequeño script para eliminar anotaciones de todos los archivos pdf en un directorio ahora es fácil:
for i in *.pdf; do rewritepdf -C '$i' '$i'.new; done
Siempre que esté en un sistema Unix:
cd <directory containing PDFs>
find . -type f -name '*.pdf' -exec perl -pi -e 's:/Annots \[[^]]+\]::g' {} +
Este es un truco que elimina todos los /Annots
comandos del PDF (los comandos que dibujan las anotaciones). Deja los objetos de anotación allí (puede abrir el PDF con un editor de texto y buscarlos), simplemente no están dibujados.
s:
(sustituto) /Annots \[
(el texto " /Annots [
") [^]]+
(una o más instancias de cualquier carácter además de " ]
") \]
(el carácter literal " ]
") ::
(reemplace todo lo que coincida con el anterior por nada) g
(reemplace varias veces por línea si es necesario).
]
normalmente se debe escapar un literal , pero no justo después de una ^
negación.
No lo he probado mucho, pero lo siguiente parece funcionar. Elimina todas las anotaciones, excepto los enlaces de documentos internos (que ninguna de las respuestas aquí parece hacer). Este script depende de la biblioteca 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
), por ejemplo /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
Yo creo que puede hacer que más fácilmente "refrying" el PDF. Refry significa: primero convierta el archivo a PostScript, luego convierta el PostScript nuevamente a PDF. Por lo general, la refutación está mal vista, porque generalmente pierdes calidad y algo de contenido. En su caso, desea perder el contenido. El freír se puede hacer con Ghostscript (y los archivos por lotes auxiliares que se envían con él; descargue el gs900w32.exe
si está en Windows), así que aquí tiene dos comandos sencillos:
pdf2ps.bat input.pdf output.ps
ps2pdf.bat output.ps input_refried.pdf
OK, dijiste que también considerarías una solución comercial ...
Te recomiendo que pruebes callas pdfToolbox . Está disponible para Windows y Mac OS X. (También tienen una CLI para Linux, pero solo puede usar "perfiles" preconfigurados. Con la GUI de Windows, puede crear sus perfiles personalizados y reutilizarlos con la CLI de Linux, sin embargo.
PdfToolbox tiene muchísimas maneras de manipular y solucionar muchos, muchos problemas individuales de PDF.
Una de las "reparaciones" es eliminar todas las anotaciones.
No necesita desembolsar dinero para probarlo primero; callas otorga licencias de prueba de 14 días de forma gratuita.