PDF Dateien unter Linux und Wirdows mit CUPS
|
Das Problem
Im Internet und Geschäftsverkehr hat sich das PDF-Format von Adobe Systems als beliebtes Format zum Austauch von formatierten Texten und Dokumenten etabliert. Allerdings wird ein Programm (z.B. Adobe's Distiller) für die Erstellung der Dateien benötigt. Diese Programme sind zum einen relativ teuer und zumeist im Netzwerk nicht verfügbar. Mit der Hilfe eines Linux Servers sowie ein wenig Handarbeit kann man die pdf-Dokumente aber auch zum Nulltarif erhalten und das ganze recht komfortabel gestalten.
Der Ansatz
Um PDF-Dokumente unter Linux zu erzeugen, soll auf einem Server ein Drucker eingerichtet werden, der aus den Anwendungen wie ein regulärer Drucker angesprochen wird und die fertigen Dokumente in einem vorher definierten Verzeichnis ablegt oder per email zustellt. Der Drucker soll sowohl aus grafischen Linux-Oberflächen wie KDE und Gnome als auch unter Windows verfügbar sein.
Die meisten Linux Distributionen bringen das benötigte Handwerkszeug für die Lösung des Problems gleich mit. Es ist lediglich ein wenig Handarbeit und ein spezielles Backend-Script nötig, das unter dieser Adresse heruntergeladen werden kann.
Server Setup
Für den Einsatz des Scriptes wird auf dem Linux Rechner ein lpd-Server (z.B. lprng) sowie ein lauffähiges ghostscript benötigt. Für den Einsatz als Druckertreiber für Windows ist darüber hinaus auch das Samba nötig. Nach dem Download und dem üblichen Entpacken des Archives wird das Script pdffilter.pl in ein Verzeichnis kopiert, in dem es vom LPD ausgeführt werden kann. Sodann ist für den LPD ein neuer Drucker in der printcap-Datei anzulegen. Anschließend ist für den neuen Drucker das entsprechende SPOOL-Verzeichnis unter:
/var/spool/lpd/NAMEofPdfPrinter
anzulegen und darauf zu achten, daß es die richtigen User/Group Einstellungen hat. Anschließend sollte der lpd-Dienst neu gestartet werden. Einstellungen der printcap Datei
Der Drucker wird in der Datei /etc/printcap eingerichtet. Ein Beispieleintrag für einen Drucker mit dem Namen pdfprint ist in dem Source-Paket enthalten. Wichtig ist die Einstellung der Zeile :if...., in der der anzuwendende Input-Filter hinterlegt wird. Der Eintrag muß auf das Script pdffilter.pl zeigen. Wie der Beispieleintrag zeigt, wird das Script mit Root-Rechten ausgeführt. Dieses ist ein potenzielles security-hole, aber hier nötig, damit die erzeugten pdf-Dateien mit den Rechten des Users angelegt werden können, der den Druckauftrag gestartet hat. (Anmerkungen zur Vermeidung der Superuser Rechte sind herzlich willkommen.)
1: pdfprint|pdfwriter:\
Diese Eintragungen sollten reichen. Für weitere Einstellungen sind die man-pages von lpd und printcap hilfreiche Quellen.
2: :lp=/dev/null:\ 3: :sd=/var/spool/lpd/pdfprint:\ 4: :if=ROOT /usr/local/sbin/lpd/pdffilter.pl:\ 5: :lf=/var/spool/lpd/pdfprint/err.log:\ 6: :mx#0:sh: pdffilter Einstellungen
Das Script pdffilter.pl ist noch an die Einstellungen des Servers anzupassen. Es ist notwendig die Einstellungen für die Verzeichnisse vorzunehmen, in die die fertigen pdf-Dateien geschrieben werden sollen. Hierbei ist es möglich ein pdfdrop Verzeichnis relativ zum jeweiligen User HOME-Verzeichnis anzugeben. Darüber hinaus ist die Ablage für die temporären Dateien sowie der Phad zum Ghoststript den Einstellungen des Servers entsprechend anzupassen. Folgende Zeilen sollten überprüft werden:
38: my $ghostscript="Pfad zu gs";
44: wohin mit teporären Daten; 49: Pfad zum User-pdfdrop; 50: Pfad zum allgemeinen pdfdrop; Verzeichnisse für die PDF-Dateien anlegen
Für die User, welche die pdf-Dateien in einem eigenen Verzeichnis speichern wollen, ist das pdfdrop Verzeichnis entsprechend der Zeile 49 aus pdffilter.pl zu erstellen. Dieses Verzeichnis muß für den lpd schreibbar sein. Die Rechte sind also entsprechend zu setzen. Wenn das Verzeichnis für einen User nicht existiert, wird die pdf-Datei entsprechend der Einstellung in Zeile 50 abgelegt. Auch dieses Verzeichnis muß existieren und für den lpd schreibbar sein.
|
Drucken aus KDE oder Gnome
Das Drucken aus KDE oder Gnome Programmen heraus gestaltet sich nun sehr einfach. Es muss nur der oben angelegte Drucker ausgewählt werden und die fertige Datei wird in dem pdfdrop-Verzeichnis als user-Jobnummer.pdf abgelegt.
Benutzung des Druckers
Die virtuellen PDF-Drucker können wie jeder andere Drucker des Systems benutzt werden. Allerding unterstützt das System noch nicht alle Optionen der Druckerbeschreibung. Auch wird noch kein Datum, Titel und weitere Informationen in der Beschreibung der PDF-Datei gesetzt.
Samba:Windows-Druck
Soll aus Windows heraus auf dem PDF-Drucker gedruckt werden, muß samba laufen. Besondere Einstellungen sind für den pdf-Drucker nicht nötig. Sofern Windows in der Lage ist auf anderen Druckern des Linux-Servers zu drucken, sollte es auch mit dem PDF-Drucker funktionieren. Ein besonderer Print-Befehl ist für den PDF-Drucker nicht nötig.
Windows-Drucker installieren
Unter Windows muß nun noch ein Postscript-Druckertreiber installiert werden. Gut eignen sich die Treiber für die Apple-Drucker wie auch der Treiber für den HP Laser Jet V MP (postscript). Die Druckerwarteschlange wird mit dem pdfprinter auf dem Linux-Rechner verbunden. Das funktioniert wie bei jedem anderen Netzwerkdrucker. Mehr ist eigentlich nicht nötig.
Drucken aus Windows-Programmen
Ist man nun so weit gekommen, kann aus allen Windows Programmen heraus der Drucker wie jeder andere Drucker ausgewählt werden und der Ausdruck als pdf-Datei in dem pdfdrop-Verzeichnis abgeholt werden. Verschiedene Einstellungen des Druckertreiber werden auch funktionieren. So z.B. der Druck von zwei Seiten auf einem Blatt.
Weiterführende Informationen
Das Script kann selbstverständlich vom Nutzer weiter an die eigenen Bedürfnisse angepaßt werden. Weitere Informationen zu diesem Thema können Sie unter der email des Autors service (at) mensinck.de anfordern. Anregungen und Kritik sind ebenfalls willkommen.
Außerdem bietet die Mensinck Consulting Service für die Installation, Wartung und weiterentwicklung des Druckertreibers sowie Drucksysteme unter Linux. Bei Interesse stehen wir Ihnen gerne zur Verfügung.
|
