¿Cómo puedo aplanar totalmente un PDF en Mac OS en la línea de comando?

16

Yo uso Mac OS X Snow Leopard. Tengo un PDF con campos de formulario, anotaciones y sellos en él. Me gustaría congelar (o "aplanar") ese PDF para que los campos del formulario no se puedan cambiar y las anotaciones / sellos ya no sean editables. Como realmente tengo muchos de estos archivos PDF, quiero hacer esto automáticamente en la línea de comandos.

Algunas cosas que he probado / considerado, con su grado de éxito:

  • Abrir en Vista previa e Imprimir en archivo. Esto crea un PDF totalmente plano sin cambiar el tamaño del archivo. Sin embargo, la única forma de automatizar parece ser escribir un AppleScript basado en una interfaz de usuario poco convincente , que he estado tratando de evitar.
  • Abra en Acrobat Pro y use una función de JavaScript para aplanar . Nuevamente, no estoy seguro de cómo automatizar esto en la línea de comando.
  • Usar pdftkcon la flattenopción. Pero esto solo aplana los campos de formulario, no los sellos y otras anotaciones.
  • Uso cupsfilterque puede crear PDF desde muchos formatos de archivo. De pdftkesta manera, solo se aplanaron los campos del formulario.
  • Use cups-pdfpara conectar al servidor de impresión de la Mac y guardar un archivo PDF en lugar de imprimir. He utilizado la versión macports . El archivo resultante es plano pero enorme. Intenté esto en un archivo de 8 MB; ¡el PDF aplanado tenía 358 MB! Quizás esto se pueda combinar con una llamada ghostscript como en Ubuntu Consejo: Cómo reducir el tamaño del archivo PDF desde la línea de comandos .

Cualquier otra sugerencia sería apreciada.

Matthew Leingang
fuente
1
Automator.app tiene algunas opciones de procesamiento de PDF incorporadas. Quizás uno de ellos pueda ayudar directamente o combinado con una de las acciones anteriores.
Kassym Dorsel
¿Puede proporcionar un documento de muestra en PDF que contenga estos elementos?
Daniel Beck
Creo que sí. En este momento, todas mis muestras son cuestionarios de estudiantes, así que tengo que burlarme de algo.
Matthew Leingang

Respuestas:

11

Intente usar pdf2psy ps2pdfen sucesión. Es un poco engorroso, pero me ayudó a reducir mi documento de 30 MB a 17 MB. No tanto como me hubiera gustado, pero aún mejor. Se me ocurrió esta idea de un amigo que usó este método para deshacerse de los permisos de contraseña en un pdf.

pdf2ps your_pdf_file.pdf your_pdf_file.ps
ps2pdf your_pdf_file.ps your_pdf_file_from_ps.pdf

¡Espero que ayude!

Olga Botvinnik
fuente
3
GhostScript FTW! Lo tengo a una sola línea mediante el uso de un tubo: pdf2ps file.pdf - | ps2pdf - file_flat.pdf. El archivo pasó de 300K a 500K, que es un gran aumento porcentual, pero nada como el aumento del 4400% cups-pdfque arrojó el método.
Matthew Leingang el
En realidad, tuve mejor suerte con pdf2ps -q -sOutputFile=- file.pdf | ps2pdf - file_flat.pdf.
Matthew Leingang
44
Teniendo en cuenta que en Mac puedes instalar Ghostscript para que los comandos anteriores estén disponibles a través de homebrew con brew install ghostscript.
Nick
5

Así que esto es lo que he estado usando últimamente. Creo que funcionalmente hace lo mismo que pdf2ps file.pdf - | ps2pdf - file_flat.pdf, pero parecía funcionar mejor para mí.

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -sOutputFile=<newfile> <oldfile>
Matthew Leingang
fuente
Las soluciones ps2pdf fallaron para mí. Esto funcionó, aparentemente reindexando las fuentes en el PDF.
phaphink
Ninguno de estos comandos se aplana. Puede copiar las capas subyacentes usando Vista previa y el contenido original estará presente.
Alain O'Dea
1

Puede ser subopcional, pero ¿ha considerado encadenar cups-pdf con pdftk o cupsfilter? Como mencionó, cups-pdf producirá un archivo pdf plano y luego lo pasará a través de pdftk o cupsfilter para reducirlo a un tamaño aceptable.

Alternativamente, eche un vistazo a /System/Library/Printers/Libraries/convert Debería poder hacer algo como

/System/Library/Printers/Libraries/convert -f input_file.pdf -o output_file.pdf -j "application/pdf"
Mxx
fuente
Mi mac no tiene /System/Library/Printers/Libraries/convert. Probé cupsfilter. Al convertir de PDF a PDF, no se realizó ningún cambio en el archivo. Al convertir de PDF a PS y luego a PDF, las anotaciones se perdieron.
Matthew Leingang el
1

ADVERTENCIA: gs y pdf2ps | ps2pdf ¡NO aplanar archivos PDF!

El uso de gs o pdf2ps seguido de ps2pdf producirá un PDF de varias capas con el contenido bajo anotaciones presentes en forma original . Puede verificar esta falla en Vista previa usando Seleccionar todo, luego Copiar, luego Pegar en una ventana TextEdit (en modo de texto enriquecido). Verá el texto o los gráficos debajo de las anotaciones de redacción, por ejemplo. Esto es claramente muy malo si legalmente necesita que ese contenido desaparezca de la salida.

Una solución de trabajo

ImageMagick puede producir un PDF aplanado de varias páginas y calidad configurable con rásteres de cada página con el siguiente comando:

convert -density 150 document_original.pdf document_flat.pdf

Este comando rasteriza document_original.pdf, crea una imagen basada en píxeles de cada página, a 150 DPI, y genera el resultado como document_flat.pdf.

Una nota sobre la calidad de imagen

Debido a la rasterización , produce un PDF no escalable (zoom y verá que el texto o las imágenes vectoriales originales se pixelan). Es probable que tenga un tamaño de archivo más grande a menos que el original tenga un contenido vectorial muy complejo como gráficos de dispersión de un millón de puntos.

Al cambiar la densidad , puede intercambiar archivos de mayor tamaño por una resolución más alta

Todo el texto se convertirá en píxeles sin formato en cada imagen de página. Los diagramas de texto y vectoriales son los que más sufren, así que experimente con el DPI hasta que obtenga archivos de salida utilizables.

Alain O'Dea
fuente
1
Gracias por contribuir con esta respuesta. Hace 5 años, la solución que escribí funcionaba para mí. Pero intentaré su respuesta la próxima vez que tenga que hacer esto (en realidad muy pronto).
Matthew Leingang el
Eso tiene sentido. Me imagino que el comportamiento de Ghostscript cambió con respecto a las anotaciones de aplanamiento. Intenté agregar -PreserveAnnots = false y todavía no funcionó. Debajo del capó, convierta usando Ghostscript para el procesamiento de PDF. Me gustaría algo que haga lo que hace Acrobat: mantiene las anotaciones, elimina el contenido detrás de ellas y conserva las imágenes vectoriales descubiertas. Sin embargo, la pieza de Document Cloud con el nuevo Acrobat realmente me pone nervioso usarlo para datos confidenciales.
Alain O'Dea
0

Applescript es probablemente la mejor / más rápida forma de acceder a la línea de comando. Una vez que funciona, puede guardarlo como una aplicación y crear un alias en su shell de comandos para ejecutarlo. A partir de entonces, simplemente escriba su alias en la línea de comando.

JRobert
fuente
Pero, ¿cuál es la forma más fácil de aplanar un PDF en AppleScript? Prefiero no escribir la interfaz de usuario para imitar la impresión al archivo. Eso parece torpe y lento.
Matthew Leingang el