![](https://seccdn.libravatar.org/avatar/ebe9e7470f033d101415722d029f0b24.jpg?s=120&d=mm&r=g)
Am Donnerstag 27 Oktober 2005 09:58 schrieb Johannes Meixner:
Hallo,
On Oct 27 09:06 Bernhard Bühler wrote (shortened):
Der Druckjob wird aus der Applikation als Kommandozeile gestartet zB: Pipe nach lpr -P drucker pipe an Vorschau pipe an weitere Ausgabe
Problematisch! Wie soll "pipe an Vorschau" funktionieren können?
Hintergrund: Man mache sich klar, wie ein Drucksystem (CUPS und auch LPRng/lpdfilter) arbeitet, zu CUPS siehe http://portal.suse.com/sdb/de/2004/05/jsmeix_print-cups-in-a-nutshell.html und http://portal.suse.com/sdb/de/2003/05/jsmeix_print-cups-filters.html
lpr oder lp erzeugen einen Druckauftrag und übergeben den an das Drucksystem. Auf stdout kommt dabei nicht der Druckauftrag raus, sondern die (Fehler)-Meldungen von lpr oder lp. Daher kann "pipe an Vorschau" nicht funktionieren.
Der Druckauftrag im Drucksystem wird vom Benutzer "lp" verarbeitet. Dieser Benutzer hat normalerweise keinen Zugriff auf die graphische Oberfläche des Benutzers, der den Druckauftrag gestartet hat. Daher kann "Vorschau" nicht ohne weiteres funktionieren (*).
Der einzige allgemein funktionierende Ansatzpunkt, der mir einfällt, ist die CUPS Filterkette vor "pstops" um einen zusätzlichen Filter zu erweitern, der dann als Eingabe PostScript bekommt und das dann "irgendwie" - siehe (*) - bei dem Benutzer,
das "irgendwie" könnte so gehen: - der Filter schreibt die Ausgabe in eine Datei in einem Verzeichnis - der Benutzer hat einen daemon laufen, welcher a) das Verzeichnis pollt, oder b) vom Filter per Signal "aufgeweckt" wird. Findet der Daemon etwas zum anzeigen macht er das. Da der Daemon erst beim graphischen Login des Benutzers gestartet wird, kann er auch auf die graph. Overfläche zugreifen.
der den Druckauftrag gestartet hat, darstellt und je nachdem wie das Darstellungsprogramm (z.B. gv) beendet wurde, entweder das PostScript auf stdout an den Rest der CUPS Filterkette ausgibt, oder abbricht. Bzw. der wenn es nicht möglich ist, die Vorschau bei dem Benutzer, der den Druckauftrag gestartet hat, darzustellen (z.B. weil kein Zugriff auf dessen X-Display möglich ist), das PostScript auf stdout an den Rest der CUPS Filterkette ausgibt (Fallback auf die normale Verarbeitung ohne Vorschau, wenn Vorschau nicht möglich).
Gruss, Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5 Mail: jsmeix@suse.de 90409 Nuernberg, Germany WWW: http://www.suse.de/
-- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer