¿Hay alguna manera de aplanar una imagen .pdf desde la línea de comandos?

19

En GIMP, puedo importar un .pdf y usar la GUI para aplanarlo (si se hizo con muchas capas) seleccionando "Acoplar imagen" en el menú desplegable "Imagen". Entonces puedo exportar el .pdf con un nuevo nombre de archivo.

Me gustaría automatizar esto. ¿Hay alguna forma de hacerlo a través de la terminal?

genérico_usuario
fuente
1
instale imagemagick y lea man mogrify-im6, montage-im6, display-im6, stream-im6, identifique-im6, import-im6, conjure-im6, composite-im6, convert-im6, animate-im6 y compare-im6.
PersianGulf

Respuestas:

25

Encontré estos 2 métodos a través de Google, en este hilo titulado: Re: Acoplar archivos PDF en la línea de comandos de UNIX .

Método # 1 - usando la conversión de Imagemagick:
$ convert orig.pdf flattened.pdf 

NOTA: Se informa que la calidad es así con este enfoque.

Método # 2 - Usando pdf2ps -> ps2pdf:
$ pdf2ps orig.pdf - | ps2pdf - flattened.pdf 

NOTA: Se informa que este método conserva la calidad de la imagen.

slm
fuente
1
Mejor calidad que GIMP en el segundo, ¡gracias!
generic_user
@ACD: es bueno saberlo. Me alegra que haya resuelto tu Q.
slm
2
El método 1 generó una imagen muy borrosa, mientras que el método 2 funcionó perfectamente.
Severyn Kozak
1
Desafortunadamente, el Método # 2 no rasteriza la imagen, por lo que si está tratando de bloquear partes sensibles, un usuario aún podría abrir el documento y eliminar capas (con algo como Inkscape). Puede, sin embargo, modificar la resolución del Método # 1: $ convert -density 150 {original,flattened}.pdf Si necesita conservar espacio en disco, puede utilizar -type Grayscaleo -monochrome, o cosas por el estilo.
eacousineau
1
Ambos métodos rasterizarán el pdf, aunque el método # 2 lo hace con una resolución mucho más alta. Entonces ninguno de estos métodos es satisfactorio.
Ant
18

Ghostscript (gs) funcionó mejor que pdf2psy convertpara mí. La calidad apenas se degradó y el tamaño del archivo es pequeño.

gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \
-sColorConversionStrategy=/LeaveColorUnchanged  \
-dAutoFilterColorImages=true \
-dAutoFilterGrayImages=true \
-dDownsampleMonoImages=true \
-dDownsampleGrayImages=true \
-dDownsampleColorImages=true \
-sOutputFile=document_flat.pdf document_original.pdf

Encontrado aquí: http://zeroset.mnim.org/2015/01/07/flatten-pdfs-with-ghostscript/

Stan Bondi
fuente
Este método funciona muy bien, el pdf no está rasterizado y el texto se conserva como texto
Ant
2
Intenté usar esto para eliminar una capa de transparencia mediante el aplanamiento, pero no funcionó para mí.
mikemtnbikes
Cambió una fuente para mí, pero por lo demás, tiene una resolución mucho mejor que los otros métodos propuestos.
ste
1

Aunque convertir mantendrá el mismo tamaño de archivo, he encontrado que es lento.

El método pdf2ps ps2pdf es más rápido, pero noté que estaba aumentando el tamaño del archivo.

pdftk es bueno porque no solo es rápido sino que también conserva un tamaño de archivo similar.

Esto es lo que uso para aplanar en masa un directorio.

    function pdfflatten () {
        pdftk "$1" output "$2" flatten
    }
    export pdfflatten
    alias pdfflattenDIR='mkdir flattenedPDFs; for i in `seq $(ls *.pdf | wc -l)`; do a=`ls *.pdf | head -$i | tail -1`; pdfflatten "$a" flattenedPDFs/"$a"; done'
Jgar
fuente
pdftk flatten no cambia las imágenes dentro de un PDF. A partir de los documentos, "combina los campos de formulario interactivos de un PDF de entrada (y sus datos) con las páginas del PDF"
Aidan Kane
1
Para ser claros, este enfoque no aplana las capas transparentes (como se indicó anteriormente).
mikemtnbikes