commit e712e9acdf3df57109a9d02106c754ac4bed60b5 Author: Gwendolyn Date: Sat Aug 27 19:57:45 2022 +0200 should have everything important, not tested on a real printer yet diff --git a/blau.png b/blau.png new file mode 100644 index 0000000..b15a596 Binary files /dev/null and b/blau.png differ diff --git a/preview.sh b/preview.sh new file mode 100755 index 0000000..195023f --- /dev/null +++ b/preview.sh @@ -0,0 +1,3 @@ +#!/bin/sh +color="$1" +gs -dSAFER -r300 -sDEVICE=pngalpha -o ${color}-output.png rezept.ps && convert ${color}.png ${color}-output.png -composite ${color}-preview.png && coreimage ${color}-preview.png diff --git a/rezept.ps b/rezept.ps new file mode 100644 index 0000000..93f498e --- /dev/null +++ b/rezept.ps @@ -0,0 +1,335 @@ +%!PS +% vim: ts=4 sw=4: +%%%%%%%%%%%%%%%%% CUSTOMISATION BEGIN %%%%%%%%%%%%%%%%% +% Rp1, Rp2 and Rp3 sind die Verordnungen +% string für einzeilige Verordnung, array für mehrzeilige Verordnung (bis zu drei Zeilen), false für durchstreichen +% alle anderen werte werden ignoriert +% RpXAutIdem auf false setzen um das entsprechende Feld anzukreuzen + +<< + /Krankenkasse (Krankenkasse) + /Name (Nachname) + /Vorname (Vorname Zweitname) + /Adresse1 (Strasse 1312) + /Adresse2 (D 12345 Stadt) + /GebAm (01.01.1970) + /Kostentraegerkennung (123456789) + /VersichertenNr (Z123456789) + /Status (XYZ) + /BetriebsstaettenNr (234567) + /ArztNr (654321) + /Datum (01.01.1970) + /Rp1 [(Eine Zeile)] + /Rp1AutIdem false + /Rp2 [(Zwei) (Zeilen)] + /Rp2AutIdem true + /Rp3 [(Und) (Drei) (Zeilen)] + /Rp3AutIdem false + + /Font /Courier + /FontSize 10 + /FontSize1Line 10 % used for 1-line medications + /FontSize2Line 8 % used for 2-line medications + /FontSize3Line 6 % used for 3-line medications +>> begin +%%%%%%%%%%%%%%%%%% CUSTOMISATION END %%%%%%%%%%%%%%%%%% + + + + + +% convert cm to points +/cm % number -> number + { + 72 mul + 2.54 div + } bind def + +% concatenate two strings +/concat % string string -> string + { + exch dup length + 2 index length add string + dup dup 4 2 roll copy length + 4 -1 roll putinterval + } bind def + +% load the elements of an array variable into the stack +/loadarr % name -> any... + { + load % load the array onto the stack + aload % load array elements onto the stack + pop % remove array itself from stack + } bind def + +% calculate the height of a text, with the current font +/textheight % text -> real + { + 0 0 moveto + true charpath pathbbox + exch pop + exch sub + exch pop + } bind def + +/setfontsize + { + /Font load + exch + selectfont + } bind def + + +<< + /PageWidth 14.8 cm + /PageHeight 10.5 cm + /PosKrankenkasse [1.0 cm 9.2 cm] + /PosName [1.0 cm 8.5 cm] + /PosVorname [1.0 cm 8.0 cm] + /PosAdresse1 [1.0 cm 7.6 cm] + /PosAdresse2 [1.0 cm 7.2 cm] + /PosGebAm [6.7 cm 7.7 cm] + /PosKostentraegerkennung [1.0 cm 6.3 cm] + /PosVersichertenNr [4 cm 6.3 cm] + /PosStatus [7.2 cm 6.3 cm] + /PosBetriebsstaettenNr [1.0 cm 5.4 cm] + /PosArztNr [3.9 cm 5.4 cm] + /PosDatum [6.7 cm 5.4 cm] + /FieldRp1 [1.0 cm 4.0 cm 7.7 cm 0.8 cm] + /PosAutIdemRp1 [0.4 cm 4.2 cm] + /FieldRp2 [1.0 cm 3.15 cm 7.7 cm 0.8 cm] + /PosAutIdemRp2 [0.4 cm 3.35 cm] + /FieldRp3 [1.0 cm 2.3 cm 7.7 cm 0.8 cm] + /PosAutIdemRp3 [0.4 cm 2.5 cm] + + /SimpleFields [(Krankenkasse) (Name) (Vorname) (Adresse1) (Adresse2) (GebAm) (Kostentraegerkennung) (VersichertenNr) (Status) (BetriebsstaettenNr) (ArztNr) (Datum)] + /RpFields [(Rp1) (Rp2) (Rp3)] +>> begin + + + +<< + /PageSize [/PageWidth load /PageHeight load] + /PageOffset [0 0] + /Margins [0 0] +>> setpagedevice + +/FontSize load setfontsize +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +/SimpleFields load +{ + dup + (Pos) exch concat cvn + loadarr + moveto + cvn + load + show +} forall + + +/rpField1Line + { + /FontSize1Line load setfontsize + + << + /boundingBox [] + /text () + >> begin + /text exch store + /boundingBox exch store + + /boundingBox load 0 get + /boundingBox load 1 get + /boundingBox load 3 get + /text load textheight + sub + 2 div + add + moveto + /text load + show + + end + /FontSize load setfontsize + } bind def + +/rpField2Line + { + /FontSize2Line load setfontsize + + << + /boundingBox [] + /text1 () + /text2 () + /padding 0 + >> begin + /text2 exch store + /text1 exch store + /boundingBox exch store + + /padding + /boundingBox load 3 get + /text1 load textheight + /text2 load textheight + add + sub + 3 div + store + + + /boundingBox load 0 get + /boundingBox load 1 get + /padding load 2 mul + /text2 load textheight + add add + moveto + /text1 load + show + + /boundingBox load 0 get + /boundingBox load 1 get + /padding load + add + moveto + /text2 load + show + end + /FontSize load setfontsize + } bind def + +/rpField3Line + { + /FontSize3Line load setfontsize + + << + /boundingBox [] + /text1 () + /text2 () + /text3 () + /padding 0 + >> begin + + /text3 exch store + /text2 exch store + /text1 exch store + /boundingBox exch store + + /padding + /boundingBox load 3 get + /text1 load textheight + /text2 load textheight + /text3 load textheight + add add + sub + 4 div + store + + /boundingBox load 0 get + /boundingBox load 1 get + /padding load 3 mul + /text3 load textheight + /text2 load textheight + add add add + moveto + /text1 load + show + + + /boundingBox load 0 get + /boundingBox load 1 get + /padding load 2 mul + /text3 load textheight + add add + moveto + /text2 load + show + + /boundingBox load 0 get + /boundingBox load 1 get + /padding load + add + moveto + /text3 load + show + end + + /FontSize load setfontsize + } bind def + +/RpFields load +{ + << + /boundingBox [] + /autIdemPos [] + /text () + /autIdem false + >> begin + dup + (Field) exch concat cvn load + /boundingBox exch store + dup + (PosAutIdem) exch concat cvn load + /autIdemPos exch store + dup + cvn load + /text exch store + dup + (AutIdem) concat cvn load + /autIdem exch store + + /text load type + /stringtype eq + { % text is string + /boundingBox load + /text load + rpField1Line + } + { % text is not string + /text load type + /arraytype eq + { % text is array + /text load length + dup + 1 eq { % length is 1 + /boundingBox load + /text loadarr + rpField1Line + } if + dup + 2 eq { % length is 2 + /boundingBox load + /text loadarr + rpField2Line + } if + dup + 3 eq { % length is 3 + /boundingBox load + /text loadarr + rpField3Line + } if + pop + } + { % text is not array + /text load + false eq { + /boundingBox load + (* * * * *) + rpField1Line + } if + } ifelse + } ifelse + + /autIdem load not + { + /autIdemPos loadarr + moveto + (x) show + } if + end +} forall + + +showpage diff --git a/rosa.pdf b/rosa.pdf new file mode 100644 index 0000000..b7fbec0 Binary files /dev/null and b/rosa.pdf differ diff --git a/rosa.png b/rosa.png new file mode 100644 index 0000000..2d3b04a Binary files /dev/null and b/rosa.png differ