Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
PS
- 1984:
PostScript Level 1— Dies wurde als residentes Betriebssystem des Apple LaserWriter-Laserdruckers auf den Markt gebracht und leitete die Desktop Publishing-Ära ein. - 1988:
Display PostScript— Mit Display PostScript entwickelte das Unternehmen NeXT 1987 in Zusammenarbeit mit Adobe eine Technik, in der die Bildschirmdarstellung mit PostScript erfolgt. Dadurch sollte ein besseres WYSIWYG erreicht werden, da Bildschirm- und Druckausgabe auf Basis derselben Beschreibungssprache erfolgen. Das System wurde zusammen mit dem Unternehmen Adobe entwickelt und später als Adobe-Produkt vertrieben. Verwendet wurde Display PostScript von NeXTStep, dem Betriebssystem der NeXTcube/NeXTstation, einem von Steve Jobs' NeXT entwickelten Computer. Display PostScript enthielt jedoch kein Window-System, sondern war zum Betrieb in Verbindung mit einem existierenden Fenstersystem gedacht, zum Beispiel X Window. In dieser Form wurde Display PostScript auch von Unternehmen wie Sun Microsystems, IBM und SGI auf deren Workstations eingesetzt. Das Betriebssystem macOS von Apple nutzt mit Quartz ein ähnliches System zur Bildschirmdarstellung, im Gegensatz zu Display PostScript wird hier nicht PostScript als Datenquelle benutzt, sondern dasPortable Document Format(PDF) verwendet. - 1991:
PostScript Level 2— Dies enthielt mehrere wichtige Verbesserungen für Level 1, einschließlich Unterstützung für Bilddekomprimierung (JPEG), In-RIP-Trennung, automatisch wachsende Wörterbücher, Speicherbereinigung, benannte Ressourcen und binäre Codierungen des PostScript-Programm-Streams. - 1997:
PostScript Level 3— Die neueste und vielleicht am weitesten verbreitete Version. Sie enthält auch einige Importverbesserungen gegenüber Level 2 wie Smooth Shading. Der Begriff „Level“ wurde gestrichen.
PDF-Dateien in TXT-Dateien umwandeln
der direkte Weg
Normalerweise geht das auf diese Weise:
pdf2ps Datei.pdf Datei.ps ps2ascii Datei.ps Datei.txt
Das funktioniert zum Beispiel bei Kontoaszügen der der Postbank prima, bei Kontoauszügen der Commerzbank dagegen, endet alles in unleserliche Zeichen wie diese hier:
Kreditkarten-Service der Commerzbank AG,Postfach 110347, 60038 Frankfurt ... \Gamma \Delta \Theta \Lambda \Upsilon ! \Gamma \Lambda \Theta \Lambda o/*`'ffiffl`'"""AEo/\Psi fiaeo/\Phi !i\Sigma `AE\Upsilon ` \Delta ,O/\Theta \Gamma \Delta \Theta \Lambda \Upsilon ! \Gamma \Lambda \Theta \Lambda o/*`'ffiffl`'"""AEo/\Psi fiaeo/\Phi !i\Sigma `AE\Upsilon ` fl,_\Theta \Gamma \Delta \Theta \Lambda \Upsilon ! \Gamma \Lambda \Theta \Lambda i'ff`\Omega '`ff\Upsilon ! !\Pi ffl' \Pi ae'\Omega _#oeoe`^ \Gamma \Theta ,** ... 50 Euro Startguthaben und ein komfortabler Konto-Umzugsservice- das kostenlose Girokonto* der Commerzbank zahlt sich aus!Unser Angebot: Sie zahlen dauerhaft keine Kontogebu"hren und wir erledigen den gesamten Schriftverkehr fu"r Sie - kostenlos und schnell. ... Zahlungsempfa"nger: Commerzbank AGBankverbindung: Commerzbank AGVerwendungszweck: So fu"llen Sie den U"berweisungstra"ger aus: IBAN:BIC: ...
Am 2007-07-26 hat sich darüber bereits jemand bei GhostScript beschwert, leider ohne Erfolg:
Der Bug-Report wurde trotzdem mit der folgenden Bemerkung geschlossen:
... The \Delta, \Lambda, etc. strings mentioned in comment #13 continue in the output, but these are non-ascii characters and it's not clear what Ghostscript should be doing for these cases. ...
Komisch nur, dass diese Zeichen ins HTML-Format übersetzt werden können und ins TXT-Format nicht…
der alternative Weg, um die oben genannten Probleme zu umgehen
es hat sich gezeigt, dass die Zeichen so ordentlich umgewandelt werden und lesbar bleiben:
pdftohtml Datei.pdf
braucht man die Bilder nicht und will alles in einer einzigen datei haben, dann ist das hier besser geeignet:
pdftohtml -enc UTF-8 -c -s -i -noframes -nodrm -hidden Datei.pdf cat Datei.html
jetzt muss man nur noch ein geeignetes Programm für die Umwandlung ins Text-Format verwenden, hier ein paar Beispiele:
lynx -dump Datei.html > Datei.txt links -dump links.html > Datei.txt abiword -t txt Datei.html
Das alles in Skript-Form könnte zum Beispiel so aussehen:
- pdf_zu_text.sh
#!/bin/bash ### einen Namen ohne Klammern und ohne Leerzeichen erzeugen NEUERNAME="$(echo "${1}" | sed 's/[( )][( )]*/_/g')" ### die Datei ggf. umkopieren, weil es sich mit Dateien, ### die Leerzeichen bzw. Klammern im Namen haben, schlecht arbeiten lässt cp "${1}" ${NEUERNAME} 2>/dev/null ### vom Namen die Endung abtrennen, um die Dateinamen von den automatisch erzeugten Dateien zu raten DATEINAME="$(echo "${NEUERNAME}" | rev | sed 's/.*[.]//' | rev)" ### PDF -> HTML pdftohtml -enc UTF-8 -c -s -i -noframes -nodrm -hidden ${NEUERNAME} ### HTML -> TXT abiword -t txt --to-name=${DATEINAME}.txt ${DATEINAME}.html ### Ergebnisse präsentieren ls -lha ${DATEINAME}.txt ${DATEINAME}.html
oder ins XML-Format:
pdftohtml -c -i -xml -enc UTF-8 -noframes -nodrm -hidden Datei.pdf Datei_alles.xml pdftohtml -c -i -xml -enc UTF-8 -noframes -nodrm -hidden -f 1 -l 1 Datei.pdf Datei_Seite_1.xml pdftohtml -c -i -xml -enc UTF-8 -noframes -nodrm -hidden -f 2 -l 2 Datei.pdf Datei_Seite_2.xml pdftohtml -c -i -xml -enc UTF-8 -noframes -nodrm -hidden -f 3 -l 3 Datei.pdf Datei_Seite_3.xml
Allerdings gehen bei der Umwandlung vom HTML- ins TXT-Format die Positionen/Spalteninformationen verlohren, in der HTML- und XML-Datei sind sie noch vorhanden.
PostScript-Code selber erstellen
hilfreiche Literatur:
- Das "Red Book", die Standardreferenz von Adobe, beschreibt PostScript Level 1 und 2 in allen Einzelheiten. "PostScript Language Reference Manual", Addison-Wesley, ISBN 0201-18127-4.
- Das "Blue Book" ist die Einführung von Adobe in PostScript anhand einfacher Beispiele. "PostScript Language Tutorial and Cookbook", Addison-Wesley, ISBN 0201-10179-3.
- Das "Green Book" ist eine Diskussion des Designs von PostScript-Programmen. "PostScript Language Program Design", Addison-Wesley, ISBN 0201-14396-8.
- Aus meinem Kursskript ist eine erweiterte und umfassende Referenz und Einführung in die Sprache hervorgegangen, die 1995 im Hanser-Verlag erschienen ist. "PostScript - Einführung, Workshop, Referenz", Ingo Klöckl, Carl Hanser-Verlag 1995, ISBN 3-446-1838-17.
- Einführender Artikel "Verkanntes Genie - Einführung in die PostScript-Programmierung", DOS International 4/1996
- Merz, Thomas / Drümmer, Olaf - "Die PostScript- & Acrobat-Bibel - Was Sie schon immer über PostScript und Acrobat/PDF wissen wollten" 2. Auflage 2002; 640 Seiten; ISBN 3-935320-01-9
Ausgabe
so kann man die Ausgabe, mit Hilfe von Ghostscript, direkt am Bildschirm betrachten (Die bekannten "DEVICES" müssen in Ghostscript einkompiliert sein!):
> gs -sDEVICE=x11 -sPAPERSIZE=a4 beispielseite.ps
so kann man mit ImageMagic die programmierte Seite in ein Bild umwandeln:
> convert beispielseite.ps beispielseite.png > convert beispielseite.ps beispielseite.jpg
Formatierung
At this time, the known paper sizes, defined in the initialization file "gs_statd.ps", are: PAPERSIZE X inches Y inches X cm Y cm X dot Y dot -------------------------------------------------------------------- a0 33.0556 46.7778 83.9611 118.816 a1 23.3889 33.0556 59.4078 83.9611 a2 16.5278 23.3889 41.9806 59.4078 a3 11.6944 16.5278 29.7039 41.9806 a4 8.26389 11.6944 20.9903 29.7039 595 842 a5 5.84722 8.26389 14.8519 20.9903 421 595 a6 4.125 5.84722 10.4775 14.8519 297 421 a7 2.91667 4.125 7.40833 10.4775 210 297 a8 2.05556 2.91667 5.22111 7.40833 a9 1.45833 2.05556 3.70417 5.22111 a10 1.02778 1.45833 2.61056 3.70417 b0 39.3889 55.6667 100.048 141.393 b1 27.8333 39.3889 70.6967 100.048 b2 19.6944 27.8333 50.0239 70.6967 b3 13.9167 19.6944 35.3483 50.0239 b4 9.84722 13.9167 25.0119 35.3483 b5 6.95833 9.84722 17.6742 25.0119 archA 9 12 22.86 30.48 archB 12 18 30.48 45.72 archC 18 24 45.72 60.96 archD 24 36 60.96 91.44 archE 36 48 91.44 121.92 flsa 8.5 13 21.59 33.02 flse 8.5 13 21.59 33.02 halfletter 5.5 8.5 13.97 21.59 note 7.5 10 19.05 25.4 letter 8.5 11 21.59 27.94 legal 8.5 14 21.59 35.56 11x17 11 17 27.94 43.18 ledger 17 11 43.18 27.94
Beispiel
- Pfeil_nach_rechts.ps
%!PS-Adobe-3.0 /inch {72 mul} def /cm {28.346457 mul} def /mm {2.8346457 mul} def /Times-Roman findfont 10 scalefont setfont % Schriftgroesse %%% Beginn Pfeil nach rechts newpath 0.5 setlinewidth % Linienbreite 0 setgray % scwartz % Start 16 cm 4 cm moveto % nach rechts 3 cm 0 cm rlineto % nach oben 0 cm 0.5 cm rlineto % nach rechts unten 1 cm -1 cm rlineto % nach links unten -1 cm -1 cm rlineto % nach oben 0 cm 0.5 cm rlineto % nach links -3 cm 0 cm rlineto % nach oben 0 cm 0.5 cm rlineto %%% Ende Pfeil nach rechts closepath stroke
- Pfeil_links_gedreht.ps
%!PS-Adobe-3.0 /inch {72 mul} def /cm {28.346457 mul} def /mm {2.8346457 mul} def /Times-Roman findfont 12 scalefont setfont % Schriftgroesse %%% Beginn Pfeil links rum gedreht newpath 0.5 setlinewidth % Linienbreite 0 setgray % scwartz % Start - zum Drehpunkt gehen 16 cm 4 cm moveto % 45° links rum (gegen den Uhrzeigersinn) drehen 45 rotate % kompletten Pfeil um 1,5 cm nach rechts verschieben 1.5 cm 0 cm rmoveto % nach rechts 3 cm 0 cm rlineto % nach oben 0 cm 0.5 cm rlineto % nach rechts unten 1 cm -1 cm rlineto % nach links unten -1 cm -1 cm rlineto % nach oben 0 cm 0.5 cm rlineto % nach links -3 cm 0 cm rlineto % nach oben 0 cm 0.5 cm rlineto % zurückdrehen -45 rotate %%% Ende Pfeil links rum gedreht closepath stroke
- Pfeil_rechts_gedreht.ps
%!PS-Adobe-3.0 /inch {72 mul} def /cm {28.346457 mul} def /mm {2.8346457 mul} def /Times-Roman findfont 12 scalefont setfont % Schriftgroesse %%% Beginn Pfeil rechts rum gedreht newpath 0.5 setlinewidth % Linienbreite 0 setgray % scwartz /pfeil-laenge-p {2 cm} def % positive Länge des Pfeiles /pfeil-breite-p {1 cm} def % positive Breite des Pfeiles /pfeil-laenge-n {0 pfeil-laenge-p sub} def % negative Länge des Pfeiles /pfeil-breite-n {0 pfeil-breite-p sub} def % negative Breite des Pfeiles /pfeil-breite-halbe-p {pfeil-breite-p 0.5 mul} def % positive halbe Breite des Pfeiles /pfeil-breite-halbe-n {pfeil-breite-n 0.5 mul} def % negative halbe Breite des Pfeiles 4 cm 27 cm moveto % zum Drtehmittelpunkt gehen -45 rotate % um -45° (rechts rum bzw. im Uhrzeigersinn) drehen -3 cm 0 cm rmoveto % den Pfeil um 3 cm nach links verschieben 0 pfeil-breite-halbe-p rlineto % eine halbe Pfeilbreite nach oben pfeil-laenge-p 0 rlineto % um die Pfeillänge nach rechts 0 pfeil-breite-halbe-p rlineto % eine halbe Pfeilbreite nach oben (1. Teil der Pfeilspitze) pfeil-breite-p pfeil-breite-n rlineto % schräg nach rechts unten (2. Teil der Pfeilspitze) pfeil-breite-n pfeil-breite-n rlineto % schräg nach links unten (3. Teil der Pfeilspitze) 0 pfeil-breite-halbe-p rlineto % eine halbe Pfeilbreite nach oben (4. Teil der Pfeilspitze) pfeil-laenge-n 0 rlineto % um die Pfeillänge nach links 0 pfeil-breite-halbe-p rlineto % eine halbe Pfeilbreite nach oben 45 rotate % wieder in die Ausgangslage zurückdrehen %%% Ende Pfeil rechts rum gedreht closepath stroke
- zwei_Kreise.ps
%!PS-Adobe-3.0 % % "0, 0" ist unten links in der Ecke % x, y % x = wagerecht % y = senkrecht % %%% Kreis zeichnen : "4 cm 11 cm 1 cm 0 360 arc" % Kreismittelpunkt : 4 cm nach rechts, 11 cm nach oben % Radius : 1 cm % Kreisbogenanfang : 0° (Position "drei Uhr") % Winkel des Kreisbogens entgegen dem Uhrzeigersinn: 360° % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /inch {72 mul} def /cm {28.346457 mul} def /mm {2.8346457 mul} def /Times-Roman findfont 20 scalefont setfont 1 setlinewidth 0 setgray % scwartz %%% Beginn newpath %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % linker Kreis 8 cm 23 cm moveto 5 cm 23 cm 3 cm 0 360 arc %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % rechter Kreis 18 cm 23 cm moveto 15 cm 23 cm 3 cm 0 360 arc %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Ende closepath stroke showpage
- beispielseite.ps
%!PS-Adobe-3.0 % % 1 inch (1") = 6 pica % 1 pica = 12 dot % 1 inch (6 pica x 12 dot) = 72 dpi (dot per inch) % % "0, 0" ist unten links in der Ecke % x, y % x = wagerecht % y = senkrecht % % %%% Kreis zeichnen : "4 cm 11 cm 1 cm 0 360 arc" % Kreismittelpunkt : 4 cm nach rechts, 11 cm nach oben % Radius : 1 cm % Kreisbogenanfang : 0° (Position "drei Uhr") % Winkel des Kreisbogens entgegen dem Uhrzeigersinn: 360° % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /inch {72 mul} def /cm {28.346457 mul} def /Times-Roman findfont 20 scalefont setfont %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Linienbreite % 1 setlinewidth % Linienbreite in "dot" %%% unterbrochene Linie % [ 10 5 2 5 ] 5 setdash % 10 Punkte schwartz, 5 Punkte weis, 2 Punkte schwartz, 5 Punkte weis (Srich-Punkt-Linie) % % die erste Linie ist beim ersten Aufruf um 5 Punkte verkuerzt %%% Anfangs- und Endform der Linie % 0 setlinecap % Quadratrand, der mit der Definition der Linie endet % 1 setlinecap % gerundeter Rand des Radius der halbfetten Linie % 2 setlinecap % Quadratschluss, der aber um die Dickenhaelfte der Linie verlaengert ist %%% Knickformen der Linie % 0 setlinejoin % bis zum bilden des spitzen Winkels (Gehrung) % 1 setlinejoin % schliessen sich mit einer Rundung der Linienbreite (rund) % 2 setlinejoin % Verbindung wird vertikal abgeschraegt mit der Laenge der Linienbreite (abgeschraegt) %%% Grau-Toenung % 0 setgray % 0=schwarz / 0.5=grau / 1=weiss %%% Faerbung % .7 .1 .2 setrgbcolor % rot-Werte gruen-Werte blau-Werte %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Beginn newpath % PAPERSIZE X inches Y inches % a4 8.26389 11.6944 1.2 inch 10 inch moveto (ein Zoll zum Quadrat, mit "rlineto") show 1.2 inch 8.8 inch moveto 1 inch 0 inch rlineto 0 inch 1 inch rlineto -1 inch 0 inch rlineto 0 inch -1 inch rlineto % PAPERSIZE X cm Y cm % a4 20.9903 29.7039 3 cm 19.5 cm moveto (ein Zentimeter zum Quadrat, mit "lineto") show 3 cm 18 cm moveto 4 cm 18 cm lineto 4 cm 19 cm lineto 3 cm 19 cm lineto 3 cm 18 cm lineto %%% Kreis zeichnen % der Anfang liegt bei "drei Uhr", 90° liegen bei "zwoelf Uhr" 3 cm 15.3 cm moveto (einen Kreis mit einem Zentimeter Durchmesser,) show 3 cm 14.5 cm moveto (mit "arc" gezeichnet) show %%% Tortenstueck % Beginn im Mittelpunkt 4 cm 13 cm moveto 4 cm 13 cm 1 cm 0 90 arc % schliessen zum Kreismittelpunkt 4 cm 13 cm lineto %%% Vollkreis % Beginn bei "drei Uhr" 5 cm 11 cm moveto 4 cm 11 cm 1 cm 0 360 arc 3 cm 9 cm moveto (der Anfang liegt bei "drei Uhr",) show 3 cm 8.2 cm moveto (90 Grad liegen bei "zwoelf Uhr") show %%% Ende closepath stroke showpage
- beispielseite_2.ps
%!PS-Adobe-3.0 % % "0, 0" ist unten links in der Ecke % x, y % x = wagerecht % y = senkrecht % % %%% Kreis zeichnen: "4 cm 11 cm 1 cm 0 360 arc" % Kreismittelpunkt: 4 cm nach rechts, 11 cm nach oben % Radius: 1 cm % Kreisbogenanfang: 0° (Position "drei Uhr") % Winkel des Kreisbogens entgegen dem Uhrzeigersinn: 360° % %%% Linien % "links" "unten" moveto % "links" "unten" lineto % "nach rechts" "nach oben" rlineto % %%% Farbe % 0 setgray % 0=schwarz / 0.5=grau / 1=weiss % .7 .1 .2 setrgbcolor % rot-Werte gruen-Werte blau-Werte % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /inch {72 mul} def /cm {28.346457 mul} def /mm {2.8346457 mul} def /Times-Roman findfont 20 scalefont setfont 1 setlinewidth %%% Beginn newpath %%% Ende closepath stroke showpage
- abgerundete-ecke.ps
%!PS-Adobe-3.0 % % "0, 0" ist unten links in der Ecke % x, y % x = wagerecht % y = senkrecht % % %%% Kreis zeichnen : "4 cm 11 cm 1 cm 0 360 arc" % Kreismittelpunkt : 4 cm nach rechts, 11 cm nach oben % Radius : 1 cm % Kreisbogenanfang : 0° (Position "drei Uhr") % Winkel des Kreisbogens entgegen dem Uhrzeigersinn: 360° % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /inch {72 mul} def /cm {28.346457 mul} def /Times-Roman findfont 20 scalefont setfont 1 setlinewidth 0 setgray % scwartz %%% Beginn newpath %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0 cm 1 cm moveto 5 cm 1 cm 5 cm 10 cm 1 cm arct 5 cm 10 cm lineto %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 5 cm 1 cm ............... arct % lineto zu dieser Koordinate % ......... 5 cm 10 cm .... arct % um die Ecke zu dieser Koordinate % .................... 1 cm arct % Radius des Kreisbogens um die Ecke % 5 cm 1 cm 5 cm 10 cm 1 cm arct % kompletter Befehl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Ende closepath stroke showpage
- test_1.ps
%!PS-Adobe-3.0 % % "0, 0" ist unten links in der Ecke % x, y % x = wagerecht % y = senkrecht % % %%% Kreis zeichnen : "4 cm 11 cm 1 cm 0 360 arc" % Kreismittelpunkt : 4 cm nach rechts, 11 cm nach oben % Radius : 1 cm % Kreisbogenanfang : 0° (Position "drei Uhr") % Winkel des Kreisbogens entgegen dem Uhrzeigersinn: 360° % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /inch {72 mul} def /cm {28.346457 mul} def /Times-Roman findfont 20 scalefont setfont 1 setlinewidth 0 setgray % scwartz %%% Beginn newpath %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% linker Kreis %%%8 cm 23 cm moveto %%%5 cm 23 cm 3 cm 0 360 arc %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% rechter Kreis %%%18 cm 23 cm moveto %%%15 cm 23 cm 3 cm 0 360 arc %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % oberer Kreis 15 cm 21 cm moveto 10 cm 21 cm 5 cm 0 360 arc closepath gsave stroke 10 cm 21 cm 6 cm 0 30 arc grestore newpath 10 cm 21 cm 6 cm 30 60 arc %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % unterer Kreis 15 cm 7 cm moveto 10 cm 7 cm 5 cm 0 360 arc %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %[ 10 5 2 5 ] 5 setdash % 10 Punkte schwartz, 5 Punkte weis, 2 Punkte schwartz, 5 Punkte weis (Srich-Punkt-Linie) % % die erste Linie ist beim ersten Aufruf um 5 Punkte verkuerzt %0 cm 14 cm moveto %21 cm 0 cm rlineto %%% Ende closepath stroke showpage
- Rosette.ps
%!PS-Adobe-3.0 /d 7.5 def % Feinheit der Rosette gsave % speichere graphische Attribute 200 200 translate % verschiebe Ursprung 50 50 scale % 1 Einheit = 50pt .02 setlinewidth % Linienbreite 1 0 moveto % erste Linie 360 d div cvi % wie oft? { 120 d add rotate % drehe alles 1 0 lineto % ziehe Linie } repeat % Schleifenende stroke % ziehe Pfad mit Farbe nach grestore showpage % alles sichtbar machen
- Vorlage.ps
%!PS-Adobe-3.0 % % "0, 0" ist unten links in der Ecke % x, y % x = wagerecht % y = senkrecht % % %%% Kreis zeichnen: "4 cm 11 cm 1 cm 0 360 arc" % Kreismittelpunkt: 4 cm nach rechts, 11 cm nach oben % Radius: 1 cm % Kreisbogenanfang: 0° (Position "drei Uhr") % Winkel des Kreisbogens entgegen dem Uhrzeigersinn: 360° % %%% Linien % "links" "unten" moveto % "links" "unten" lineto % "nach rechts" "nach oben" rlineto % %%% Farbe % 0 setgray % 0=schwarz / 0.5=grau / 1=weiss % .7 .1 .2 setrgbcolor % rot-Werte gruen-Werte blau-Werte % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /inch {72 mul} def /cm {28.346457 mul} def /mm {2.8346457 mul} def /Times-Roman findfont 20 scalefont setfont 1 setlinewidth %%% Beginn newpath %%% Ende closepath stroke showpage
- Ziffernblatt.ps
%!PS-Adobe-3.0 % % "0, 0" ist unten links in der Ecke % x, y % x = wagerecht % y = senkrecht % %%% Kreis zeichnen : "4 cm 11 cm 1 cm 0 360 arc" % Kreismittelpunkt : 4 cm nach rechts, 11 cm nach oben % Radius : 1 cm % Kreisbogenanfang : 0° (Position "drei Uhr") % Winkel des Kreisbogens entgegen dem Uhrzeigersinn: 360° % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /inch {72 mul} def /cm {28.346457 mul} def /mm {2.8346457 mul} def /xmitte {10.5 cm} def /ymitte {14.8 cm} def /radius-klein {6 cm} def % 06,0 cm - Kreis /radius-mittel {8.5 cm} def % 08,5 cm - Kreis /radius-gross {10 cm} def % 10,0 cm - Kreis % damit bekommt die Blattmitte die Koordinaten X="0" und Y="0" xmitte ymitte translate /Times-Roman findfont 20 scalefont setfont 1 setlinewidth 0 setgray % schwarz %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % â /acircumflex ä /adieresis Ä /Adieresis % à /agrave ç /ccedilla Ç /Ccedilla % é /eacute É /Eacute ê /ecircumflex % ë /edieresis è /egrave € /Euro % ï /idieresis ô /ocircumflex ö /odieresis % Ö /Odieresis ß /germandbls ü /udieresis % Ü /Udieresis %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Kreis (links herum gezeichnet) % xmitte ymitte radius 0 360 arc % % Kreis: X-Mittelpunkt Y-Mittelpunkt Radius Kreisbeginn Kreisende % xmitte ymitte radius 360 0 arcn % % bei "arc" ist "0" die 3-Uhr-Position, arc dreht links herum % bei "arcn" ist "0" die 3-Uhr-Position, arcn dreht rechts herum % % Nach einem "arc" oder "arcn", zeichnet auch ein "moveto", % deshalb ist es besser, wenn sie jeweils in einen eigenen "path" % gekapselt werden. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Kreise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% newpath 0 0 radius-klein 360 0 arcn % 06,0 cm - Kreis closepath stroke newpath 0 0 radius-mittel 360 0 arcn % 08,5 cm - Kreis closepath stroke newpath 0 0 radius-gross 360 0 arcn % 10,0 cm - Kreis closepath stroke %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% newpath % Beginn % Mittelpunkt 0 0 moveto 1 0 rlineto %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Stunden-Striche %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1 1 12 { 0 0 moveto % zum Mittelpunkt gehen 30 rotate radius-mittel 0 rmoveto -0.5 cm 0 rlineto % Stunden-Strich zeichnen 0 0 moveto % zum Mittelpunkt gehen radius-klein 0 rmoveto 0.5 cm 0 rlineto % Stunden-Strich zeichnen } for % Schleifenende %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Minuten- bzw. Sekunden-Striche %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 60 % wie oft? { 0 0 moveto % zum Mittelpunkt gehen 6 rotate radius-mittel 0 rmoveto 0.5 cm 0 rlineto % Minuten- bzw. Sekunden-Strich zeichnen 0.2 cm 0 rmoveto } repeat % Schleifenende %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Minuten- bzw. Sekunden-Zahlen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -10 -5 translate % neuen Mittelpunkt festlegen 0 0 moveto % zum neuen Mittelpunkt gehen %1 1 rlineto % Orientierungspunkt - Test 90 rotate % Ausgangspunkt von 3-Uhr- auf 12-Uhr-Position verdrehen -0.6 rotate % optische Anpassung /i -1 def /r {radius-mittel 28 add} def { /i i 1 add def i 60 ge { exit } if /gp {i 6 mul} def /gn {i -6 mul} def /grad-p {gp 90 sub} def /grad-n {gn 90 add} def /t {gp 2 div} def % Versatz des Winkels, weil die Zahl schräg steht und der Drehpunkt immer Am Zahlenfuß ist /v {t sin} def /b {v 12 mul} def % damit die Zahlen mittig zwischen den Strichen angeordnet sind 0 0 moveto % zum Mittelpunkt gehen r 0 rmoveto %b 0 rmoveto %1 0 rlineto % Positionspunkt - Test grad-p rotate % beim 1. mal: -90 rotate %-6 0 rmoveto %(.) show %b 9 string cvs show ( ) show i 2 string cvs show () show %grad-p 3 string cvs show ( ) show % Test %grad-n 4 string cvs show ( ) show % Test grad-n rotate % beim 1. mal: 90 rotate -6 rotate } loop % Schleifenende %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Stunden-Striche + Stunden-Zahlen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1.5 rotate 0 -3 translate % neuen Mittelpunkt festlegen (höhe / seite) /i 0 def /r {radius-klein 1.2 cm add} def { /i i 1 add def i 12 gt { exit } if /gp {i 30 mul} def /gn {i -30 mul} def /grad-p {gp 90 sub} def /grad-n {gn 90 add} def 0 0 moveto % zum Mittelpunkt gehen -30 rotate r 0 rmoveto grad-p rotate % beim 1. mal: -90 rotate %b 9 string cvs show ( ) show i 2 string cvs show ( ) show %grad-p 3 string cvs show ( ) show % Test %grad-n 4 string cvs show ( ) show % Test grad-n rotate % beim 1. mal: 90 rotate } loop % Schleifenende %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %[ 10 5 2 5 ] 5 setdash % 10 Punkte schwarz, 5 Punkte weiß, 2 Punkte schwartz, 5 Punkte weis (Srich-Punkt-Linie) % % die erste Linie ist beim ersten Aufruf um 5 Punkte verkuerzt %0 cm 14 cm moveto %21 cm 0 cm rlineto closepath % beenden der Zeichnung stroke % zeichnen der bisherigen Zeichnung showpage % komplette Seite zeigen
ISO-1252 Encoding
Um in PS/PDF-Dokumenten mit Umlauten schreiben zu können, muss man einen PS-Zeichensatz mit Umlauten haben.
Damit man hiermit auch Umlaute darstellen kann ist es zwingend erforderlich, dass die entsprechenden Dateien im Zeichensatz ISO-8859-15 abgespeichert werden!
Hier ein PS-Zeichensatz, der seinerzeit von OpenOffice.org 1.0.3 verwendet wurde um Daten dem Drucker zu übergeben:
- Test_ISO-1252.ps
%!PS-Adobe 3.0 %%BeginProlog (OpenOffice.org 1.0.3) /ISO1252Encoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /unused /Euro /unused /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /unused /Zcaron /unused /unused /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /unused /zcaron /Ydieresis /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def /psp_definefont { exch dup findfont dup length dict begin { 1 index /FID ne { def } { pop pop } ifelse } forall /Encoding 3 -1 roll def currentdict end exch pop definefont pop } def /pathdict dup 8 dict def load begin /rcmd { { currentfile 1 string readstring pop 0 get dup 32 gt { exit } { pop } ifelse } loop dup 126 eq { pop exit } if 65 sub dup 16#3 and 1 add exch dup 16#C and -2 bitshift 16#3 and 1 add exch 16#10 and 16#10 eq 3 1 roll exch } def /rhex { dup 1 sub exch currentfile exch string readhexstring pop dup 0 get dup 16#80 and 16#80 eq dup 3 1 roll { 16#7f and } if 2 index 0 3 -1 roll put 3 1 roll 0 0 1 5 -1 roll { 2 index exch get add 256 mul } for 256 div exch pop exch { neg } if } def /xcmd { rcmd exch rhex exch rhex exch 5 -1 roll add exch 4 -1 roll add 1 index 1 index 5 -1 roll { moveto } { lineto } ifelse } def end /readpath { 0 0 pathdict begin { xcmd } loop end pop pop } def systemdict /languagelevel known not { /xshow { exch dup length 0 1 3 -1 roll 1 sub { dup 3 index exch get exch 2 index exch get 1 string dup 0 4 -1 roll put currentpoint 3 -1 roll show moveto 0 rmoveto } for pop pop } def /rectangle { 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } def /rectfill { rectangle fill } def /rectstroke { rectangle stroke } def } if /psp_lzwfilter { currentfile /ASCII85Decode filter /LZWDecode filter } def /psp_ascii85filter { currentfile /ASCII85Decode filter } def /psp_lzwstring { psp_lzwfilter 1024 string readstring } def /psp_ascii85string { psp_ascii85filter 1024 string readstring } def /psp_imagedict { /psp_bitspercomponent { 3 eq { 1 }{ 8 } ifelse } def /psp_decodearray { [ [0 1 0 1 0 1] [0 255] [0 1] [0 255] ] exch get } def 7 dict dup /ImageType 1 put dup /Width 7 -1 roll put dup /Height 5 index put dup /BitsPerComponent 4 index psp_bitspercomponent put dup /Decode 5 -1 roll psp_decodearray put dup /ImageMatrix [1 0 0 1 0 0] dup 5 8 -1 roll put put dup /DataSource 4 -1 roll 1 eq { psp_lzwfilter } { psp_ascii85filter } ifelse put } def %%EndProlog (OpenOffice.org 1.0.3) /URWGothicL-Book-iso1252 /URWGothicL-Book ISO1252Encoding psp_definefont /URWGothicL-Demi-iso1252 /URWGothicL-Demi ISO1252Encoding psp_definefont /URWGothicL-BookObli-iso1252 /URWGothicL-BookObli ISO1252Encoding psp_definefont /URWGothicL-DemiObli-iso1252 /URWGothicL-DemiObli ISO1252Encoding psp_definefont /URWBookmanL-Ligh-iso1252 /URWBookmanL-Ligh ISO1252Encoding psp_definefont /URWBookmanL-DemiBold-iso1252 /URWBookmanL-DemiBold ISO1252Encoding psp_definefont /URWBookmanL-LighItal-iso1252 /URWBookmanL-LighItal ISO1252Encoding psp_definefont /URWBookmanL-DemiBoldItal-iso1252 /URWBookmanL-DemiBoldItal ISO1252Encoding psp_definefont /CharterBT-Bold-iso1252 /CharterBT-Bold ISO1252Encoding psp_definefont /CharterBT-BoldItalic-iso1252 /CharterBT-BoldItalic ISO1252Encoding psp_definefont /CharterBT-Roman-iso1252 /CharterBT-Roman ISO1252Encoding psp_definefont /CharterBT-Italic-iso1252 /CharterBT-Italic ISO1252Encoding psp_definefont /CenturySchL-Roma-iso1252 /CenturySchL-Roma ISO1252Encoding psp_definefont /CenturySchL-Bold-iso1252 /CenturySchL-Bold ISO1252Encoding psp_definefont /CenturySchL-Ital-iso1252 /CenturySchL-Ital ISO1252Encoding psp_definefont /CenturySchL-BoldItal-iso1252 /CenturySchL-BoldItal ISO1252Encoding psp_definefont %Dingbats %Cyrillic %Cyrillic-Italic /NimbusSanL-Regu-iso1252 /NimbusSanL-Regu ISO1252Encoding psp_definefont /NimbusSanL-Bold-iso1252 /NimbusSanL-Bold ISO1252Encoding psp_definefont /NimbusSanL-ReguItal-iso1252 /NimbusSanL-ReguItal ISO1252Encoding psp_definefont /NimbusSanL-BoldItal-iso1252 /NimbusSanL-BoldItal ISO1252Encoding psp_definefont /NimbusSanL-ReguCond-iso1252 /NimbusSanL-ReguCond ISO1252Encoding psp_definefont /NimbusSanL-BoldCond-iso1252 /NimbusSanL-BoldCond ISO1252Encoding psp_definefont /NimbusSanL-ReguCondItal-iso1252 /NimbusSanL-ReguCondItal ISO1252Encoding psp_definefont /NimbusSanL-BoldCondItal-iso1252 /NimbusSanL-BoldCondItal ISO1252Encoding psp_definefont /NimbusRomNo9L-Regu-iso1252 /NimbusRomNo9L-Regu ISO1252Encoding psp_definefont /NimbusRomNo9L-Medi-iso1252 /NimbusRomNo9L-Medi ISO1252Encoding psp_definefont /NimbusRomNo9L-ReguItal-iso1252 /NimbusRomNo9L-ReguItal ISO1252Encoding psp_definefont /NimbusRomNo9L-MediItal-iso1252 /NimbusRomNo9L-MediItal ISO1252Encoding psp_definefont /NimbusMonL-Regu-iso1252 /NimbusMonL-Regu ISO1252Encoding psp_definefont /NimbusMonL-Bold-iso1252 /NimbusMonL-Bold ISO1252Encoding psp_definefont /NimbusMonL-ReguObli-iso1252 /NimbusMonL-ReguObli ISO1252Encoding psp_definefont /NimbusMonL-BoldObli-iso1252 /NimbusMonL-BoldObli ISO1252Encoding psp_definefont /URWPalladioL-Roma-iso1252 /URWPalladioL-Roma ISO1252Encoding psp_definefont /URWPalladioL-Bold-iso1252 /URWPalladioL-Bold ISO1252Encoding psp_definefont /URWPalladioL-Ital-iso1252 /URWPalladioL-Ital ISO1252Encoding psp_definefont /URWPalladioL-BoldItal-iso1252 /URWPalladioL-BoldItal ISO1252Encoding psp_definefont %StandardSymL /URWAntiquaT-RegularCondensed-iso1252 /URWAntiquaT-RegularCondensed ISO1252Encoding psp_definefont /URWGroteskT-Bold-iso1252 /URWGroteskT-Bold ISO1252Encoding psp_definefont /URWChanceryL-MediItal-iso1252 /URWChanceryL-MediItal ISO1252Encoding psp_definefont /Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont /Times-BoldItalic-iso1252 /Times-BoldItalic ISO1252Encoding psp_definefont /Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont /Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont /Helvetica-iso1252 /Helvetica ISO1252Encoding psp_definefont /Helvetica-Bold-iso1252 /Helvetica-Bold ISO1252Encoding psp_definefont /Helvetica-Oblique-iso1252 /Helvetica-Oblique ISO1252Encoding psp_definefont /Courier-iso1252 /Courier ISO1252Encoding psp_definefont /Courier-Bold-iso1252 /Courier-Bold ISO1252Encoding psp_definefont /Courier-BoldOblique-iso1252 /Courier-BoldOblique ISO1252Encoding psp_definefont /Courier-Oblique-iso1252 /Courier-Oblique ISO1252Encoding psp_definefont %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /inch {72 mul} def /cm {28.346457 mul} def /mm {2.8346457 mul} def /zeile {13 mul} def % Zeilenhoehe /Helvetica-iso1252 findfont % Schriftart 10 scalefont setfont % Schriftgroesse .3 setlinewidth % Linienbreite 0 setgray % Farbe (0=schwarz / 0.5=grau / 1=weiss) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Am Ende habe ich noch ein paar Einstellungen fest gelegt, damit man gleich loslegen kann.

