[[Vorlage(Getestet, jammy)]] {{{#!vorlage Wissen [:Anwendungen_hinzufügen:Programme_installieren] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [https://ghostscript.com/ Ghostscript] {en} ist ein ursprünglich von Peter Deutsch für das [:GNU:GNU-Projekt] entwickeltes, in der Programmiersprache [wikipedia:Programmiersprache_C:C] geschriebenes freies Werkzeug zum Interpretieren der Seitenbeschreibungssprachen [wikipedia:Pdf:PDF] und [wikipedia:Postscript:PostScript]. Es kann in diesen Formaten kodierte Dokumente mittels einer [wikipedia: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 ([wikipedia:Gpl:GPL]) herausgegeben. Mögliche Eingabeformate sind PostScript (Level 1, 2 und 3) und PDF. Auswahl einiger möglicher Ausgabeformate (bei Dateiausgabe): [wikipedia:Windows_Bitmap:BMP], [wikipedia:Jpg:JPG], [wikipedia:Portable_Network_Graphics:PNG], [wikipedia:Portable_Bitmap:PBM], [wikipedia:Portable_Graymap:PGM], [wikipedia:Portable_Pixmap:PPM], [wikipedia:Tagged_Image_File_Format:TIFF], [wikipedia:Xcf:XCF] ([:GIMP:]-Standarddateiformat), PDF, [wikipedia:Textdatei: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: {{{#!vorlage Paketinstallation ghostscript }}} = Benutzung = Der allgemeine Aufruf erfolgt unter Linux über den Befehl [2]: {{{#!vorlage Befehl 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=` 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: {{{#!vorlage Befehl 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: {{{#!vorlage Tabelle Ü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 == {{{#!vorlage Hinweis Die Platzhalter für die Argumente, welche den Optionen hinzugefügt werden müssen, werden in dieser Übersicht in spitzen Klammern (z.B. ``) dargestellt, um aufgrund der ungewohnten Großschreibung der GhostScript-Optionen Verwechslungen zu vermeiden. In der tatsächlichen Verwendung sind die spitzen Klammern wegzulassen. }}} {{{#!vorlage Tabelle Übersicht über einige Optionen +++ Option Beschreibung +++ `-sDEVICE=` 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=` Ausgabedatei wählen; wenn für `` 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. +++ `-gx` Seitengeometrie; legt die Seitengröße in Pixeln fest. +++ `-r`[[BR]]oder[[BR]]`-rx` Festlegen der Auflösung (Pixel pro Inch), falls das Gerät, z.B. der Drucker, dies unterstützt. +++ `-sPAPERSIZE=` 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=` PDF-Option: Startet die Dateioperation erst bei der angegebenen Seite des Dokuments. +++ `-dLastPage=` PDF-Option: Stoppt die Dateioperation bei der angegebenen Seite des Dokuments. +++ `-dCompatibilityLevel=` 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 [[Vorlage(Tasten, enter)]]-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. }}} {{{#!vorlage Hinweis Anstelle von `=` kann auch das Rautensymbol `#` verwendet werden. }}} == Verwendungsbeispiele == * Um jpg Dateien in ein pdf zu wandeln: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dFirstPage=2 -dLastPage=4 -sOutputFile=Ausgabedatei.pdf Eingabedatei.pdf }}} * Extrahieren von Text aus '''Eingabedatei.pdf''' nach '''Textausgabe.txt''': {{{#!vorlage Befehl 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: {{{#!vorlage Befehl gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=Ausgabe.pdf 1.pdf 2.pdf 3.pdf }}} * Seitenränder vergrößern bzw. -inhalt um 10% verkleinern ([https://ma.juii.net/blog/scale-page-content-of-pdf-files Quelle] {en}): {{{#!vorlage Befehl gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dCompatibilityLevel="1.5" -dSubsetFonts=true -dEmbedAllFonts=true -sPAPERSIZE=a4 -sOutputFile="Ausgabedatei.pdf" -c "<> setpagedevice" -f Eingabedatei.pdf }}} * Die farbige '''Eingabedatei.pdf''' in '''Ausgabedatei.pdf''' mit Graustufen konvertieren: {{{#!vorlage Befehl 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: {{{#!vorlage befehl 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: {{{#!vorlage Befehl gs -h }}} erreichbar ist. = Links = * [https://ghostscript.com/ Projektseite] {en} * [https://ghostscript.com/documentation.html Dokumentation] {en} * [wikipedia:Ghostscript:] # tag: Shell, PDF