Gibt es eine Möglichkeit, ein PDF-Bild über die Befehlszeile zu reduzieren?

19

In GIMP kann ich eine PDF-Datei importieren und sie mithilfe der Benutzeroberfläche reduzieren (wenn sie mit vielen Ebenen erstellt wurde), indem ich im Dropdown-Menü "Bild" die Option "Bild reduzieren" auswähle. Ich kann dann die .pdf mit einem neuen Dateinamen exportieren.

Ich würde das gerne automatisieren. Gibt es eine Möglichkeit, dies über das Terminal zu tun?

generic_user
quelle
1
installiere imagemagick und lies man mogrify-im6, montage-im6, display-im6, stream-im6, identifiziere-im6, import-im6, zaubere-im6, verbunde-im6, konvertiere-im6, animiere-im6 und vergleiche-im6.
PersianGulf

Antworten:

25

Ich habe diese 2 Methoden über Google gefunden, in diesem Thread mit dem Titel: Re: Flattening PDF Files at the UNIX Command Line .

Methode 1 - Verwenden von Imagemagicks Konvertierung:
$ convert orig.pdf flattened.pdf 

HINWEIS: Die Qualität wird bei diesem Ansatz als so angegeben.

Methode 2 - Verwenden von pdf2ps -> ps2pdf:
$ pdf2ps orig.pdf - | ps2pdf - flattened.pdf 

HINWEIS: Es wird berichtet, dass diese Methode die Bildqualität beibehält.

slm
quelle
1
Bessere Qualität als GIMP auf der zweiten Seite - danke!
generic_user
@ACD - das ist gut zu wissen.
Ich bin
2
Methode 1 erzeugte ein sehr unscharfes Bild, während Methode 2 perfekt funktionierte.
Severyn Kozak
1
Leider rastert Methode 2 das Bild nicht. Wenn Sie also versuchen, sensible Bereiche auszublenden, kann ein Benutzer das Dokument dennoch öffnen und Ebenen entfernen (mit Inkscape). Sie können jedoch die Auflösung von Methode 1 ändern: $ convert -density 150 {original,flattened}.pdf Wenn Sie Speicherplatz sparen müssen, können Sie -type Grayscaleoder -monochromeoder ähnliche Elemente verwenden.
Eacousineau
1
Beide Methoden rastern das PDF-Dokument, obwohl Methode 2 dies mit einer viel höheren Auflösung ausführt. Keine dieser Methoden ist also zufriedenstellend.
Ant
18

Ghostscript (gs) funktionierte besser als pdf2psund convertfür mich. Die Qualität wurde kaum beeinträchtigt und die Dateigröße ist gering.

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

Hier zu finden: http://zeroset.mnim.org/2015/01/07/flatten-pdfs-with-ghostscript/

Stan Bondi
quelle
Diese Methode funktioniert hervorragend, das PDF wird nicht gerastert und der Text bleibt als Text erhalten
Ant
2
Ich habe versucht, mit dieser Option eine Transparenzebene durch Abflachen zu entfernen, aber es hat bei mir nicht funktioniert.
Mikemtnbikes
Es hat eine Schriftart für mich geändert, aber ansonsten eine viel bessere Auflösung als die anderen vorgeschlagenen Methoden.
ste
1

Obwohl convert die gleiche Dateigröße beibehält, habe ich festgestellt, dass es langsam ist.

Die pdf2ps ps2pdf-Methode ist schneller, aber mir ist aufgefallen, dass sie die Dateigröße erhöht.

pdftk ist nett, weil es nicht nur schnell ist, sondern auch eine ähnliche Dateigröße behält.

Dies ist, was ich benutze, um ein Verzeichnis in großen Mengen zu reduzieren.

    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
quelle
Mit pdftk flatten werden die Bilder in einer PDF- Datei nicht geändert. In den Dokumenten "werden die interaktiven Formularfelder (und deren Daten) einer PDF-Eingabe mit den Seiten der PDF-Datei zusammengeführt"
Aidan Kane,
1
Bei diesem Ansatz werden transparente Ebenen nicht abgeflacht (wie oben angegeben).
Mikemtnbikes