PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PDF-Dokumente direkt drucken...



Matzetronic
05.03.02, 13:08
Ich habe mir mal die Mühe gemacht und aus den Schnipseln hier im Forum eine funktionierende Lösung gebastelt. Meine Shell-Kenntnisse sind allerdings äußerst schlecht - Verbesserungsvorschläge deshalb jederzeit willkommen (effektiverer Code, Fehlerbehandlung etc.).
Ich beziehe mich hier auf SuSE 7.0.

1. Drucker einrichten
- YasT starten --> Administration des Systems --> Hardware in System integrieren --> Drucker konfigurieren.
- Drucker farbig ansteuern --> Druckertyp Postscript --> ... --> Schnittstelle lpt2 o.ä. auswählen (wichtig, ein Drucker sollte hier nicht real angeschlossen sein) --> Auflösung 1200x1200 dpi.

Da das kein realer Drucker ist, verbleiben die Dateien im Spool-Verzeichnis, die Datei status sagt lediglich "waiting for PS_1200dpi to become ready (offline ?)". So, jetzt haben wir alle Zeit der Welt, um das PostScript-Dokument aus dem Spoolverzeichnis zu klauen :) .


2. Script (s.u.) kopieren und an lokale Gegebenheiten anpassen

Ich gehe davon aus, dass die Namensgebung der Dateien im Spoolverzeichnis immer nach demselben Muster stattfindet und zwar:

cfA028pinguin <--- Steuerdatei
dfA028pinguin <--- Dokument im PostScript-Format

Eine Steuerdatei hat beispielsweise folgenden Inhalt:


Hpinguin
Pmatze
JMicrosoftWord-DOS-Referenz.doc
Cpinguin
Lmatze
fdfA029pinguin
UdfA029pinguin
NMicrosoftWord-DOS-Referenz.doc

Diese Steuerdatei benutze ich, um den Besitzer und den Namen des Dokumentes auszulesen.


Hier also das Script, welches crongesteuert bei mir alle 15 Minuten läuft und bisher super funktioniert:


#!/bin/bash
PS_EXT=".ps"
PDF_EXT=".pdf"

cd /var/spool/lpd/PS_1200dpi-a4-auto-color-1200
ls *$HOSTNAME 2>/dev/null
if [ $? = 0 ]; then
for FILE in $(ls d*$HOSTNAME)
do
DATFILE=$(echo $FILE |sed s/d/c/);
OWNER=$(cat $DATFILE |tail -n4 |head -n1 |grep L |sed s/L//);
HOMEDIR=$(echo "/home/$OWNER");
PS_NAME1=$(cat $DATFILE |tail -n6 |head -n1 |grep J |sed s/J//);
PS_NAME=$(echo $PS_NAME1$PS_EXT);
PDF_NAME=$(echo $PS_NAME1$PDF_EXT);
mv $FILE $PS_NAME
ps2pdf $PS_NAME $PDF_NAME
rm $PS_NAME
rm $DATFILE
mv $PDF_NAME $HOMEDIR
done
fi



Eine Sache habe ich hier noch nicht berücksichtigt, wenn der Eigentümer root oder nobody ist und dessen Home-Verzeichnis nicht unter /home liegt.


Matze

mightymike99
05.03.02, 23:12
Für KDE-User hat der KDE eigene Druckdialog die Fähigkeit bereits mitgebracht. (Siehe Bildschirmphoto).

Nachdem ich es allerdings zum Test mal kurz benutzt habe und eine Fehlermeldung bekommen habe...