E-Mails mit PDF-Anhängen lösen das gute alte Fax ab. Viele Programme erzeugen PDF-Dateien, aber viele Word- und Excel-Vorlagen sind zum Ausdrucken auf Briefpapier gedacht.
Bisher haben wir tatsächlich den Brief auf Papier ausgedruckt, eingescannt und dann per E-Mail verschickt. Das ist nicht nur umständlich, sondern erzeugt auch große, qualitativ minderwertige PDF-Dateien, die keinen echten Text enthalten und darum nicht gescheit durchsuchbar sind.
Dabei ist die Lösung doch so einfach, wenn man einen Linux- oder BSD-Server hat. Der Fileserver samba stellt hervorragende Druckdienste zur Verfügung.
Unter anderem kann man einen virtuellen PostScript-Drucker zur Verfügung stellen, auf den die Windows-Computer drucken können. So erhält man auf dem Server eine gültige PostScript-Datei, die mit dem Tool ps2pdf einfach in ein PDF umgewandelt werden kann.
Das Tool pdftk kann diese PDF-Datei mit einer Briefbogen-PDF-Datei hinterlegen, so dass mit einem Druck-Befehl eine perfekte Geschäfts-E-Mail erhält, die der Server im einfachsten Fall auf dem Server speichert, wo der Benutzer sie abholen kann.
Voraussetzung:
Ein laufender Samba-Server sowie die Pakete ghostscript (enthält ps2pdf), pdftk und CUPS.
Inspiriert durch die kleine HowTo habe ich das folgende Skript mit dem Namen /usr/sbin/pdfprint.sh geschrieben:
#!/bin/bash # /usr/sbin/pdfprint.sh # #Konvertiert die gedruckte PostScript-Datei in pdf #und unterlegt einen Briefbogen # #$1 = spool file #$2 = uid (Username) #$3 = Firma OUTPUTFILE=pdf-$2-`date +%Y%m%d%H%M%S`.pdf OUTPUTPATH=/srv/files/ # Hier liegen die Briefbogendateien LOGFILE=pdfcreate.log BRIEFBOGENPATH=/srv/files/briefboegen # Der Dateiname heißt 'Firma'_briefbogen.pdf BRIEFBOGENSUFFIX=_briefbogen.pdf # Folglich sieht so der Dateiname des leeren Briefbogens aus BRIEFBOGENFILE=$BRIEFBOGENPATH/$3$BRIEFBOGENSUFFIX # Gibt es den Briefbogen? if [ -e $BRIEFBOGENFILE ]; then echo Konvertierte $1 mit $BRIEFBOGENFILE in $OUTPUTPATH/$OUTPUTFILE >> $OUTPUTPATH/$LOGFILE /usr/bin/ps2pdf $1 - | /usr/bin/pdftk - background $BRIEFBOGENFILE output $OUTPUTPATH/$OUTPUTFILE >> $OUTPUTPATH/$LOGFILE else echo Briefbogendatei $BRIEFBOGENFILE nicht gefunden >> $OUTPUTPATH/$LOGFILE echo Konvertierte $1 in $OUTPUTPATH/$OUTPUTFILE >> $OUTPUTPATH/$LOGFILE /usr/bin/ps2pdf $1 $OUTPUTPATH/$OUTPUTFILE fi echo PDF erstellt. Spool-Datei löschen $1 >> $OUTPUTPATH/$LOGFILE rm $1 >> $OUTPUTPATH/$LOGFILE echo Fertig. >> $OUTPUTPATH/$LOGFILE echo >> $OUTPUTPATH/$LOGFILE
Die Variablen BRIEFBOGENPATH, OUTPUTPATH sollte man natürlich an seine Festplattenstruktur anpassen.
Das Skript wird aufgerufen mit dem Namen der Spool-Datei (PostScript), dem Benutzernamen (der Bestandteil) des PDF-Dateinamens wird und dem Firmennamen, der zur Auswahl des korrekten Briefpapiers benötigt wird.
Wenn kein gültiger Firmenname übergeben wird (wenn keine Briefbogendatei gefunden wird), wird eine PDF-Datei ohne Briefpapier erzeugt.
Die wichtigste Zeile ist:
ps2pdf $1 - | pdftk - background $BRIEFBOGENFILE output $OUTPUTFILE
Man könnte sie auch direkt in die smb.conf schreiben, aber dieses Skript finde ich etwas ordentlicher. Tipp: Wenn man statt background den Befehl stamp verwendet, wird die Briefbogen-Datei auf den Text gelegt. Das macht natürlich nur dann sinn, wenn diese auch transparente Bereiche hat.
Wichtig ist, dass das Skript mit
chmod u+x pdfprint.sh
ausführbar gemacht wird. Sonst läuft es nicht.
Jetzt muss noch die smb.conf um die Drucker erweitert werden:
[global] ... printing = sysv load printers = yes ... [printers] comment = All Printers path = /var/spool/samba public = yes guest ok = yes writeable = yes printable = yes browseable = yes [pdf-acme] comment = PDF mit Acme-Briefbogen auf K: erzeugen path = /var/tmp printable = Yes print command = /usr/sbin/pdfprint.sh %s %U acme lpq command = /bin/true create mask = 0600 use client driver = yes
Damit das ganze läuft, muss man den Briefbogen der Firma acme dort hinterlegen, wo pdfprint ihn erwartet:
/srv/files/briefboegen/acme_briefbogen.pdf
Wichtig ist, dass der Server die Leserechte hat.
Das Skript ist modular aufgebaut. Man kann also in der smb.conf noch weitere PDF-Drucker anlegen, wenn man mehrere Firmen im Netzwerk hat.
Nachdem der Server mit dem Befehl
killall -HUP smbd
gezwungen wurde, die smb.conf neu einzulesen, sieht man auf den Windows-Clients schon den pdf-acme-Drucker.
Wenn man ihn doppelklickt, wird man von Windows nach dem Druckertreiber gefragt. Entscheident ist, dass man jetzt einen PostScript Drucker auswählt. Ich habe gute Erfahrungen mit "HP LaserJet 5P/5MP" gemacht. Unter Windows 7 mit 64 Bit verwende ich den "HP Color LaserJet 2800 Series PS"
Fertig! Wenn man jetzt auf diesen neuen Drucker druckt, entsteht fast augenblicklich die PDF-Datei im dafür vorgesehenen Ordner.
Für die Benutzer ist das also kinderleicht. Sie können mit jedem Windows-Programm auf diesen Drucker drucken. Man sollte ihnen natürlich verraten, wo sich die fertige PDF-Datei befindet.
Write a comment