Existe-t-il un moyen d'aplatir une image .pdf à partir de la ligne de commande?

19

Dans GIMP, je peux importer un .pdf et utiliser l'interface graphique pour l'aplatir (s'il a été créé avec plusieurs couches) en sélectionnant "Aplatir l'image" dans le menu déroulant "Image". Je peux ensuite exporter le .pdf avec un nouveau nom de fichier.

J'aimerais automatiser cela. Existe-t-il un moyen de le faire via le terminal?

utilisateur_générique
la source
1
installez imagemagick et lisez man mogrify-im6, montage-im6, display-im6, stream-im6, identifier-im6, import-im6, conjure-im6, composite-im6, convert-im6, animate-im6 et compare-im6.
PersianGulf

Réponses:

25

J'ai trouvé ces 2 méthodes via Google, dans ce fil intitulé: Re: Flattening PDF Files sur la ligne de commande UNIX .

Méthode # 1 - en utilisant la conversion d'Imagemagick:
$ convert orig.pdf flattened.pdf 

REMARQUE: la qualité est signalée comme telle avec cette approche.

Méthode n ° 2 - Utilisation de pdf2ps -> ps2pdf:
$ pdf2ps orig.pdf - | ps2pdf - flattened.pdf 

REMARQUE: cette méthode est réputée conserver la qualité de l'image.

slm
la source
1
Meilleure qualité que GIMP sur le second - merci!
generic_user
@ACD - c'est bon à savoir. Heureux qu'il ait résolu votre Q.
slm
2
La méthode 1 a généré une image très floue, tandis que la méthode 2 a parfaitement fonctionné.
Severyn Kozak
1
Malheureusement, la méthode n ° 2 ne pixellise pas l'image, donc si vous essayez de bloquer les parties sensibles, un utilisateur peut toujours ouvrir le document et supprimer des calques (avec quelque chose comme Inkscape). Vous pouvez cependant modifier la résolution de la méthode n ° 1: $ convert -density 150 {original,flattened}.pdf si vous avez besoin de conserver de l'espace disque, vous pouvez utiliser -type Grayscaleou -monochromeou des choses de ce type.
eacousineau
1
Les deux méthodes pixelliseront le pdf, bien que la méthode # 2 le fasse à une résolution beaucoup plus élevée. Aucune de ces méthodes n'est donc satisfaisante.
Ant
18

Ghostscript (gs) a mieux fonctionné que pdf2pset convertpour moi. La qualité n'a guère été dégradée et la taille du fichier est petite.

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

Trouvé ici: http://zeroset.mnim.org/2015/01/07/flatten-pdfs-with-ghostscript/

Stan Bondi
la source
Cette méthode fonctionne très bien, le pdf n'est pas tramé et le texte est conservé en tant que texte
Ant
2
J'ai essayé de l'utiliser pour supprimer une couche de transparence via l'aplatissement, mais cela n'a pas fonctionné pour moi.
mikemtnbikes
Il a changé une police pour moi, mais sinon une meilleure résolution que les autres méthodes proposées.
ste
1

Bien que la conversion conserve la même taille de fichier, je l'ai trouvé lent.

La méthode pdf2ps ps2pdf est plus rapide mais j'ai remarqué pour moi qu'elle augmentait la taille du fichier.

pdftk est agréable car il est non seulement rapide mais conserve également une taille de fichier similaire.

C'est ce que j'utilise pour aplatir en bloc un répertoire.

    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
la source
pdftk flatten ne modifie pas les images d'un PDF. D'après les documents, il "fusionne les champs de formulaire interactifs d'un PDF d'entrée (et leurs données) avec les pages du PDF"
Aidan Kane
1
Pour être clair, cette approche n'aplatit pas les couches transparentes (comme indiqué ci-dessus).
mikemtnbikes