ubuntuusers.de

Ghostscript

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png 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

Paketliste zum Kopieren:

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 Graustufenmodus

  • x11gray4 für eine Bildschirmausgabe im feinen Graustufenmodus

  • x11mono 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.

Diese Revision wurde am 9. März 2019 19:49 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: PDF, Shell