Ghostscript
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Ghostscript 🇬🇧 ist ein ursprünglich von Peter Deutsch für das GNU-Projekt entwickeltes, in der Programmiersprache C geschriebenes freies Werkzeug zum Interpretieren der Seitenbeschreibungssprachen PDF und PostScript. Es kann in diesen Formaten kodierte Dokumente mittels einer Programmierschnittstelle auf Bildschirmen und Druckern wiedergeben, sie in andere Dateiformate umwandeln oder beispielsweise auch bei der Fehlersuche in Dokumenten behilflich sein. Das Programm ist neben Linux auch für andere Plattformen erhältlich. Ghostscript wird, nach mehreren zwischenzeitlichen Änderungen der Lizenz, nunmehr wieder unter der GNU Public License (GPL) herausgegeben.
Mögliche Eingabeformate sind PostScript (Level 1, 2 und 3) und PDF. Auswahl einiger möglicher Ausgabeformate (bei Dateiausgabe): BMP, JPG, PNG, PBM, PGM, PPM, TIFF, XCF (GIMP-Standarddateiformat), PDF, TXT und mehr. Das Programm Ghostscript wird von vielen anderen Programmen als funktionaler "Unterbau" verwendet, wie z.B. von DjVuDigital, pstoedit oder auch ImageMagick.
Installation¶
Ghostscript ist normalerweise auf Ubuntu-Systemen als Bestandteil des Druckservers CUPS vorinstalliert, kann allerdings bei Bedarf über folgendes Paket auch manuell installiert [1] werden:
ghostscript
Befehl zum Installieren der Pakete:
sudo apt-get install ghostscript
Oder mit apturl installieren, Link: apt://ghostscript
Benutzung¶
Der allgemeine Aufruf erfolgt unter Linux über den Befehl [2]:
gs OPTIONEN DATEI1 OPTIONEN DATEI2 ...
Anschließend bleibt das Programm geöffnet und zeigt eine Konsole (GS>
) zur Ghostscript-Befehlseingabe an. Diese Ghostscript-Konsole (und damit das Programm selbst) kann mit dem Befehl quit
beendet werden oder wird von Anfang an über die Option -dBATCH
übergangen.
Geräteoptionen¶
Ausgabegeräte wie Drucker, Bildschirmausgabe usw. werden über die Geräteoption sDEVICE=<GERÄT>
angesprochen.
Bildschirmausgabe¶
Wird keine Geräteoption angegeben, nimmt das Programm als Standard-Ausgabegerät das Gerät x11alpha
an, welches die Bildschirmausgabe ist. Die Eingabedatei wird in einem Vorschaufenster angezeigt. Sollen feinere Einstellmöglichkeiten für die Bildschirmausgabe vorgenommen werden, ist die Option sDEVICE=
anzugeben, wobei unter anderem beispielsweise folgende Attribute möglich sind:
x11gray2
für eine Bildschirmausgabe im groben Graustufenmodusx11gray4
für eine Bildschirmausgabe im feinen Graustufenmodusx11mono
für eine Bildschirmausgabe in Schwarzweißrasterung
Die Einstellungen der Ghostscript-Bildschirmausgabe können über einen Eingriff in die X-Server-Datenbank manipuliert werden. Hierzu wird eine Textdatei, beispielsweise ~/.Xresources, angelegt, welche nun z.B. mit Anweisungen zur Auflösung gefüllt werden kann:
Ghostscript*xResolution: 70 Ghostscript*yResolution: 70
Nach dem Abspeichern werden diese Informationen mittels des Befehls:
xrdb -merge ~/.Xresources
in die XServer-Datenbank eingearbeitet, so dass künftige Bildschirmausgaben von Ghostscript in der festgelegten Auflösung angezeigt werden. Für weitere Einstellungsmöglichkeiten der Ghostscript-Bildschirmausgabe sei auf die Manpage (Abschnitt "X RESOURCES") verwiesen.
Formatumwandlung¶
Für eine von der Bildschirm-Standardausgabe abweichende Ausgabe ist es nötig, ein Ausgabegerät anzugeben, wobei Dateiformate ebenfalls als Ausgabegerät definiert sind. Dies erfolgt folglich ebenfalls über die Option -sDEVICE=
. Des Weiteren ist die Angabe einer Ausgabedatei (Option sOutputFile=
) notwendig.
Die folgende Tabelle gibt beispielhaft anhand der Dateiformate BMP, TXT und PDF eine Übersicht über einige mögliche Geräte, welche für die Dateiumwandlung in ein anderes Dateiformat zur Verfügung stehen:
Übersicht über einige Geräte zur Option -sDEVICE= | ||
Gerät | Beschreibung | |
bmp16 | Bitmap-Datei, grobe Rasterung | |
bmp256 | Bitmap-Datei, feinere Rasterung | |
bmp16m | Bitmap-Datei, fein | |
bmp32b | Bitmap-Datei, invertiert | |
bmpgray | Graustufenbitmap | |
bmpmono | Bitmap-Datei, dunkles Schwarzweißraster | |
bmpsep1 | Bitmap-Datei, grobes Zeitungsraster, hell | |
bmpsep8 | Bitmap-Datei, fein | |
txtwrite | Schreibt eine TXT-Datei | |
pdfwrite | Erstellt eine PDF-Datei |
Analog stehen für andere Formate auch noch andere Ausgabegeräte zur Verfügung:
jpeg
,jpegcmyk
,jpeggray
png16
,png16m
,png256
,png48
,pngalpha
,pnggray
,pngmono
pnm
,pnmraw
ppm
,ppmraw
xcf
tiff12nc
,tiff24nc
,tiff32nc
,tiff48nc
,tiff64nc
,tiffcrle
,tiffg3
,tiffg32d
,tiffg4
,tiffgray
,tifflzw
,tiffpack
,tiffscaled
,tiffscaled24
,tiffscaled8
,tiffsep
,tiffsep1
pbm
,pbmraw
pgm
,pgmraw
,pgnm
,pgnmraw
pcx16
,pcx24b
,pcx256
,pcx2up
,pcxcmyk
,pcxgray
,pcxmono
pkm
,pkmraw
Eine komplette Liste der möglichen Dateiformate für die Option -sDEVICE=
findet sich in der Hilfefunktion bzw. der Dokumentation.
Reale Ausgabegeräte¶
Die realen Ausgabegeräte (Drucker) werden über Argumente wie z.B. epson
, deskjet
und dergleichen angesprochen. Zur Übersicht über alle unterstützten realen Ausgabegeräte wird auf die Hilfefunktion verwiesen, wo eine vollständige Liste eingesehen werden kann.
Weitere Optionen¶
Hinweis:
Die Platzhalter für die Argumente, welche den Optionen hinzugefügt werden müssen, werden in dieser Übersicht in spitzen Klammern (z.B. <ARGUMENT>
) dargestellt, um aufgrund der ungewohnten Großschreibung der GhostScript-Optionen Verwechslungen zu vermeiden. In der tatsächlichen Verwendung sind die spitzen Klammern wegzulassen.
Übersicht über einige Optionen | ||
Option | Beschreibung | |
-sDEVICE=<GERÄT> | Ausgabe-GERÄT (bzw. Ausgabe-Dateiformat) auswählen (siehe Liste oben oder gs -h ). Beispiel: ein Epson-Drucker wird mit -sDEVICE=epson angesprochen; eine JPEG-Datei wird mittels Geräteschalters -sDEVICE=jpeg erzeugt; Achtung: in diesem Fall zusätzlich Ausgabedatei definieren! | |
-sOutputFile=<DATEI> | Ausgabedatei wählen; wenn für <DATEI> ein - angegeben (-sOutputFile=- ) wird, wird vom Programm die Standardausgabe gewählt; ein Dateinamenszähler wird in den Namen der Ausgabedatei eingebaut, wenn der Platzhalter %d integriert wird; hierbei ist es zusätzlich möglich, die Anzahl der Stellen des Zählers festzulegen. Beispiel: -sOutputFile=Ausgabe%d.pdf führt zu Ausgabe1.pdf, Ausgabe2.pdf usw.; -sOutputFile=Ausgabe%03d.pdf führt zu Ausgabe001.pdf, Ausgabe002.pdf usw. | |
-g<BREITE>x<HÖHE> | Seitengeometrie; legt die Seitengröße in Pixeln fest. | |
-r<AUFLÖSUNG> oder -r<X-AUFLÖSUNG>x<Y-AUFLÖSUNG> | Festlegen der Auflösung (Pixel pro Inch), falls das Gerät, z.B. der Drucker, dies unterstützt. | |
-sPAPERSIZE=<SEITENFORMAT> | Falls vom Gerät unterstützt, kann über diesen Schalter das Seitenformat angegeben werden, z.B. -sPAPERSIZE=legal (amerikanisches Legal-Format; Standardeinstellung) oder -sPAPERSIZE=a4 | |
-dFirstPage=<SEITENZAHL> | PDF-Option: Startet die Dateioperation erst bei der angegebenen Seite des Dokuments. | |
-dLastPage=<SEITENZAHL> | PDF-Option: Stoppt die Dateioperation bei der angegebenen Seite des Dokuments. | |
-dCompatibilityLevel=<VERSION> | Kompatibilität mit dem PDF-Standard festlegen, wobei VERSION entweder 1.2 , 1.3 , 1.4 oder 1.7 (Standardwert) sein kann. | |
-dBATCH | Beendet das Programm nach der letzten Datei (entspricht dem Ghostscript-Konsolenbefehl quit ). | |
-dNOPAUSE | Deaktiviert die Pause nach dem Ende jeder Seite, welche normalerweise eine Bestätigung mittels der ⏎ -Taste verlangt; dies kann in manchen Fällen wünschenswert sein. | |
-dSAFER | Sicherheits-Modus; sperrt die Möglichkeit des Programms, Dateien umzubenennen oder zu löschen; diese Option kann hilfreich sein, um ein versehentliches Überschreiben oder Löschen wichtiger Dateien zu verhindern. | |
-dQUIET | Stiller Modus; die normalen Ausgaben beim Programmstart (Programmname und -version, Lizenz etc.) werden unterdrückt; Alternativ kann die Kurzform -q eingegeben werden. | |
-dNODISPLAY | Unterdrückt die normale Initialisierung des Ausgabegeräts, z.B. der Bildschirmausgabe. Dies kann recht nützlich sein, wenn nicht auf eine Ausgabe der Daten, sondern zum Beispiel auf eine Weiterverarbeitung abgezielt wird. |
Hinweis:
Anstelle von =
kann auch das Rautensymbol #
verwendet werden.
Verwendungsbeispiele¶
Um jpg Dateien in ein pdf zu wandeln:
for i in *.jpg; do echo '('$i') viewJPEG showpage'; done | gs -sDEVICE=pdfwrite -o jpgs.pdf viewjpeg.ps -c "-"
Um eine Datei Dokument.pdf auf dem Bildschirm anzuzeigen, genügt im Terminal die Eingabe:
gs -dSAFER -dBATCH Dokument.pdf
Ein Dokument Eingabedatei.pdf in eine PNG-Datei Ausgabebild_300.png mit einer Auflösung von 300 Pixeln/Inch umwandeln:
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r300 -sOutputFile=Ausgabebild_300.png Eingabedatei.pdf
Ein Dokument Eingabedatei.pdf in eine Graustufen-PNG-Datei Ausgabebild_grayscale.png umwandeln:
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pnggray -sOutputFile=Ausgabebild_grayscale.png Eingabedatei.pdf
Aus der mehrseitigen Eingabedatei.pdf die Seiten 2 bis 4 herausziehen und diese in der Ausgabedatei.pdf speichern:
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dFirstPage=2 -dLastPage=4 -sOutputFile=Ausgabedatei.pdf Eingabedatei.pdf
Extrahieren von Text aus Eingabedatei.pdf nach Textausgabe.txt:
gs -dNODISPLAY -dNOBIND -dWRITESYSTEMDICT -dSIMPLE ps2ascii.ps Eingabedatei.pdf -c quit >Textausgabe.txt
Dateien 1.pdf, 2.pdf und 3.pdf in Ausgabe.pdf zusammenführen:
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=Ausgabe.pdf 1.pdf 2.pdf 3.pdf
Seitenränder vergrößern bzw. -inhalt um 10% verkleinern (Quelle 🇬🇧):
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dCompatibilityLevel="1.5" -dSubsetFonts=true -dEmbedAllFonts=true -sPAPERSIZE=a4 -sOutputFile="Ausgabedatei.pdf" -c "<</BeginPage{0.9 0.9 scale 29.75 42.1 translate}>> setpagedevice" -f Eingabedatei.pdf
Die farbige Eingabedatei.pdf in Ausgabedatei.pdf mit Graustufen konvertieren:
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dProcessColorModel=/DeviceGray -dColorConversionStrategy=/Gray -dPDFUseOldCMS=false -o Ausgabedatei.pdf -f Eingabedatei.pdf
Eingabedatei.pdf mit größerem oder kleineren DIN-A-Format in Ausgabedatei.pdf als A4 konvertieren:
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sPAPERSIZE=a4 -dFIXEDMEDIA -dPDFFitPage -o Ausgabedatei.pdf Eingabedatei.pdf
Wichtige Programmdateien¶
Unter Ubuntu finden sich wichtige Dateien zu Ghostscript im Verzeichnis /usr/share/ghostscript. Über das Bearbeiten der Initialisierungsdatei /usr/share/ghostscript/9.xx/Resource/Init/gs_init.ps können Programmparameter wie zum Beispiel eine Festlegung des Seitenformats usw. dauerhaft im Programm verankert werden. Bei Eingriffen in diese Initialisierungsdatei sollte allerdings umsichtig umgegangen werden (evtl. Backup anlegen), um Änderungen, die eine nicht funktionierende Startkonfiguration herbeiführen, zu vermeiden.
Hilfe¶
Für über diese Zusammenstellung hinausgehende Informationen zur Benutzung und für weitergehende Optionen, wie sie z.B. auch in den Verwendungsbeispielen in diesem Artikel schon aufgetaucht sind, empfiehlt sich ein Blick in die Manpage oder in die sehr umfangreiche Hilfsfunktion, welche über den Befehl:
gs -h
erreichbar ist.
Links¶