PDF / FAX Verarbeitung
Druckaufträge in HYLAFAX verarbeiten
Systeme im Rechnungswesen produzieren Unmengen an Dokumenten die automatisch in Document Management Systemen archiviert oder weiter verarbeitet werden. Im Idealfall produziert das System Textdateien und legt sie im Dateisystem ab – hier kann je nach Belegart eine entsprechende Verarbeitung statt finden.
Ist im Anwendungsprogramm das versenden von Belegen als eMail oder FAX nicht vorgesehen, kann diese Funktionalität schnell realisiert werden. Für die Generierung von Faxen, kann zum Beispiel im Druckdokument ein Steuerzeichen angelegt werden. In meinem speziellen Fall fügte ich ein @@NUMMER ein – zu empfehlen ist grundsätzlich, einen Marker zu verwenden, der im gewöhnlichen Sprachgebrauch nicht vorkommt. Aus dem Dokument ist die Faxnummer einfach mit
1 | NUM=$(grep '^@@NUMMER' $x |tr -d '@NUMMER '|tr -d ') |
heraus zu filtern. Grep filtert die Zeile mit dem Marker aus dem Dokument, tr(im) löscht den Marker aus der Zeile und übergibt die Faxnummer, direkt hinter dem Marker, an die Variable NUM.
Grundsätzlich könnte das Dokument jetzt an die Nummer versendet werden. Wenn aber im 21ten Jahrhundert noch solch eine antiquierte Technik verwendet wird, dann aber mit einem Logo auf dem Dokument und einer Quittung als PDF. Es ist nicht schwierig, aus der Textdatei eine PDF zu fertigen, es hängt aber von den Versionen der verschiedenen Programme ab sowie der Standardblattgröße des Systems. Das Postscript verwende ich als Zwischenformat da hier Änderung am Layout recht einfach durch einfügen einiger Steuerzeichen möglich ist:
1 2 3 4 5 6 7 8 | echo -e "\000epsf[s0.95 x-3 y0a nx ny]{logo.eps}" > fax.tmp # Einfuegen des Logos echo -e "\000font{Arial@6}" >> fax.tmp # Aendern der Schriftart und Groesse echo -e " HylaFax Server by HALSYSTEM" >> fax.tmp # Kopfzeile echo -e "\000font{Courier@11}" >> fax.tmp # Schriftart und Groesse des Dokumentes |
Etwas Arbeit verursacht das einsetzen des EPS Logos. Es muss die exakte Position ermittelt und angegeben werden. In meinem Fall wird das Logo mit dem Faktor 0.95 angezeigt und um 3 Spalten nach links, in absoluter Position gesetzt. Aus der Textdatei wird mit Hilfe des Programms enscript eine Postscript Datei erzeugt.
1 2 3 4 | enscript -e -B -pfax.ps fax.pr # aus Text wird Postscript ps2pdf fax.ps $x.pdf # aus Postscript wird PDF |
Das PDF kann an dieser Stelle beliebig verarbeitet werden z.B. Ablage in ein DMS System oder Versandt per eMail. Da ich mit der Formulargröße stets Probleme hatte, konvertiere ich vor dem versenden zurück in Postscript mit dem Parameter „DIN A4“.
1 2 3 4 | acroread -toPostScript -size a4 fax.pdf # PDF als DIN A4 Postscript sendfax -T 3 -f $MAIL -n -d $NUM fax.ps # versenden des Telefaxes |
Wer möchte, kann kopieren und an sein System bzw. Bedürfnisse anpassen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #!/bin/bash # FAX Handling Script # Thomas Schilling # HALSYSTEM.de # NEUTRASOFT / AS400 LISTE=*.FAX for x in $LISTE do echo -e "\000epsf[s0.95 x-3 y0a nx ny]{logo.eps}" > fax.tmp echo -e "\000font{Arial@6}" >> fax.tmp echo -e " HylaFax Server by HALSYSTEM" >> fax.tmp echo -e "\000font{Courier@11}" >> fax.tmp NUM=$(grep '^@@NUMMER' $x |tr -d '@NUMMER '|tr -d ' ') if [ -z $NUM ] ; then LISTE=/var/spool/hylafax/log/c* for x in $LISTE; do mv -f $x $x.doc cp -f $x.doc /tmp/b2/Fax/Quittung/ mv -f $x.doc /home/tsp/trash/ done else echo -e "" >> fax.tmp sed '1,5d' $x >> fax.tmp cat fax.tmp|sed -e '1,$s/@@FRM 0/LOGO/g' > fax.pre cat fax.pre|perl -p -i -e 's/LOGO/\000epsf[s0.95 x-3 y0a nx ny]{logo.eps}/g;' > fax.pr enscript -e -B -pfax.ps fax.pr cat fax.ps|perl -p -i -e 's/\224/oe/g;' > fax.um cat fax.um|perl -p -i -e 's/\204/ae/g;' > fax.ps cat fax.ps|perl -p -i -e 's/\201/ue/g;' > fax.um cat fax.um|perl -p -i -e 's/\232/Ue/g;' > fax.ps cat fax.ps|perl -p -i -e 's/\341/ss/g;' > fax.um cat fax.um > fax.ps ps2pdf fax.ps $x.pdf cp -f $x.pdf /tmp/b2/FAX/gesendet/ cp -f $x.pdf fax.pdf acroread -toPostScript -size a4 fax.pdf chmod 0777 * if [ $NUM = "00" ] ; then cp $x.pdf /tmp/b2/PDF/ else case "$x" in MBA*) MAIL=mba@b1.bub;; *) MAIL=mk@b1.bub;; esac sendfax -T 3 -f $MAIL -n -d $NUM fax.ps fi mv $x /home/tsp/trash/ fi done LISTE=/var/spool/hylafax/recvq/*.tif for x in $LISTE; do tiff2pdf -o$x.pdf $x mv -f $x /home/tsp/trash/ cp -f $x.pdf /tmp/b2/Fax/empfangen/ mv -f $x.pdf /home/tsp/trash/ mv -f /home/vera/*.pdf /home/tsp/trash/ done |