Manchmal steht man vor dem Problem ein PDF versenden oder irgendwo hochladen zu müssen wo nur Dateien mit einer Größe von wenigen MB akzeptiert werden, das eigene PDF aber größer ist. Dann stellt sich immer die Frage wie die Dateigröße ohne viel Aufwand verkleinert werden kann.
Mithilfe von Ghostscript kann das sehr einfach mit einem einzigen Befehl im Terminal erledigt werden. Ghostscript ist sowohl unter Ubuntu als auch dem Windows Subsystem for Linux standartmäßig installiert. Falls es mal nicht installiert sein sollte kann es einfach durch folgenden Befehl installiert werden
$ sudo apt install ghostscript
Der Befehl zum Verkleinern einer PDF lautet
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/Qualität -dNOPAUSE -dBATCH -sOutputFile=Ausgabe.pdf Eingabe.pdf
Folgende Parameter müssen dabei jeweils angepasst werden
- -dPDFSETTINGS spezifiziert die Qualität der Ausgabe Datei. Qualität kann durch einen der folgenden Werte ersetzt werden, welche sich an den Acrobat Distiller 5 Parametern orientieren
- screen niedrige Qualität (72 dpi)
- ebook mittlere Qualität (150 dpi)
- printer hohe Qualität (300 dpi)
- prepress sehr hohe Qualität (300 dpi)
- -sOutputFile legt den Namen bzw. Pfad der Ausgabe Datei fest
- Eingabe.pdf ist der Name bzw. Pfad zur Eingabe Datei
Die übrigen Parameter haben folgende Bedeutung
- -sDEVICE das Ausgabegerät, hier das schreiben in eine Datei
- -dCompatibilityLevel legt den kompatiblen PDF Standard fest
- -dNOPAUSE deaktiviert die notwendige manuelle Bestätigung nach der Konvertierung jeder einzelner Seite
- -dBATCH beendet Ghostscript nach dem ausführen des Befehls automatisch
Dann stellt sich immer die Frage wie die Dateigröße ohne viel Aufwand verkleinert werden kann.
Mithilfe von Ghostscript kann das sehr einfach mit einem einzigen Befehl im Terminal erledigt.
und dann der Befehle :
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/Qualität -dNOPAUSE -dBATCH -sOutputFile=Ausgabe.pdf Eingabe.pdf
Und jetzt meine Frage : Was soll daran einfach und schnell sein wenn ich erst ein Terminal dann den Befehl und dann noch bestimmte Parameter eingeben muss ?
Kein Wunder das so viel User Windows den alternativen Betriebssystemen vorziehen.
Es geht um Anwendungs- und Bedienerfreundlichkeit. Was man in diesem Falle mit sicherheit nicht sagen kann.
Genial, hat mir sehr geholfen. Danke.
Vielen vielen Dank. Das hat mir sehr geholfen. Wirklich genial.
Danke – made my day! Damit spart man es sich die Bilder einzeln zu verkleinern 🙂
Hi Carsten,
vielen Dank für das kleine How-To. Das hat mir sehr viel Zeit gespart!
Kleine Erweiterung – falls im Ausgangs-PDF HyperLinks sind und die erhalten bleiben sollen: -dPrinted=false mit aufnehmen…
–> https://gist.github.com/firstdoit/6390547#gistcomment-2964125
Wie gut, dass ich diese Seite gefunden habe! Prima erklärt – hat alles wunderbar geklappt. Allerbesten Dank!!!
Danke, die Erklärung ist prima!
Nicht schön aber funktional: Alias anlegen (z.B. in der ~/.bashrc):
alias pdfcompress=’_pdfcompress(){ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/“$1″ -dNOPAUSE -dBATCH -sOutputFile=“$3″ „$2“;}; _pdfcompress‘
Dann ist der Aufruf möglich mit:
pdfcompress Qualität ein.pdf aus.pdf
Sehr hilfreiche Anleitung.
Wenn es ‚quick and dirty‘ gehen soll, geht es auch einfacher:
$ ps2pdf input_file.pdf output_file.pdf
ps2pdf ist im Paket ‚ghostscript‘ enthalten und dient eigentlich dazu, Postscript-Dateien in PDF-Dateien umzuwandeln. Funktioniert aber auch mit PDF-Dateinen zu PDF-Dateien und reduziert deren Größe deutlich.
Einen 18,7MiB großen Scan eines Fahrzeugscheines reduziert der Befehl z.B. auf E-Mail taugliche 3,2MiB.