Problem gelöst !
Das Schlüsselwort heißt: "pass through printing"
Manche sagen auch "terminal printing"
Manche auch "transparent printing"
--excurs--
Wie funktioniert das ?
Theorie:
Das ist eine Technik die noch aus den Tagen stammt als es keine PCs gab und Mainfraimrechner über echte Terminale gesteuert wurden. Wenn man Text in so einem Terminal eintippt, dann sieht es nur so aus als ob dieser direkt auf dem Bildschirm eingegeben wird. Tatsächlich werden die Zeichen zuerst zum Rechner gesendet. Der Rechner versieht dann den Text zusätzlich mit "escape sequences" (Steuerbefehle für Darstellung von Text und Cursor im Client u. noch viel mehr ) und sendet diese zurück zum Terminal. Im Terminalbildschirm wird dann der Text entsprechend dargestellt. Diese Steuerzeichen können auch dafür verwendet werden, um einen Text der normalerweise auf die Standarteingabe gesendet wird, direkt auf den Drucker auszugeben. So ähnlich funktioniert das auch Heute noch.
Praxis:
Man baut über eine Terminal-Emulation (Win: Putty etc., Linux: xterm etc. ) eine Verbindug zu einem entferntem Rechner per SSH auf. Gibt man auf dem Terminal folgenden Text zusammen mit den "escape sequences" ein, erfolgt die Ausgabe auf dem Drucker:
printf "\033[5i\c"; mein Text der gedruckt wird; printf "\033[4i\c".
--excursende--
Meistens klappt so etwas nicht auf Anhieb. Der Client muss noch konfiguriert werden. So war es zumindest bei mir sowohl unter WindowsXP als auch unter Ubuntu 8.10
Konfiguration.:
Putty:
Unter dem Menüpunkt Terminal den angeschlossenen Drucker auswählen
Passenden Zeichensatz auswählen - bei mir utf8.
xterm:
vim .XResources
i
xterm*printerCommand: lpr -PLaserJet 2100M # eigenen Drucker angeben
xterm*printAttributes: 0
xterm*printerFormFeed: false
xterm*printerAutoClose: true
xrdb -merge .Xresources
ESC
:wq
Nachtrag:
es müssen noch weiter Optionen gefunden werden weil sonst der Drucker evtl. Steuerzeichen mitdruckt.
Die codierung sollte auch festgelegt werden.
Gnome-Terminal:
laut bugs.launchpad.net BUGREPORT 234518 nicht möglich
Console:
Option mit Absicht nicht möglich.
Nach dem Einrichten der Clients hat dann auch der Ausdruck des obigen Einzeillers geklappt.
Bei späterem Druck von Dokumenten aus der Anwendug konnte nur Putty (für Windows) richtig drucken.
xterm muss noch weiter konfiguriert werden. Die Konfiguration wird nachgetragen sobald ich sie gefunden habe.
Die verwendeten Drucker:
HP LaserJet 1200: geht
HP DeskJet 6122: geht
HP LaserJet 2100M : geht.
Epson LQ 580 Nadeldrucker: geht.
Über die direkte Eingabe der "escape sequnces" kann man auch Dateien drucken, ist aber etwas umständlich.. Um es komfortabler zu machen kann man das Programm "vtprint" installieren. Damit kann man eine Datei als Argument angeben und sofort lokal ausdrucken.
Jetzt muss nur noch der Druck aus dem DOS Programm eingestellt werden. Dafür reichte bei mir ein einziger Konfigurationseintrag in /etc/dosemu/dosemu.config
statt:
- $_lpt1 = "lpr -l"
eingegeben:
$_lpt1 = "vtprint"
Damit wird die Druckausgabe, die mein DOS Program an LPT1 sendet, einfach auf einen beliebiges Programm oder Script umgebogen. Ziemlich praktisch - so etwas. Damit eröffnen sich unzählige weitere Anwendungsmöglichkeiten.
Und jetzt klappt's auch mit dem lokalen-drucken-vom-remote-host. Natürlich nur mit Textdateien/streams aber das gibt mein DOS-Programm auch aus.
Ich weiss nicht ob das eine gute, geschweige denn eine sichere Lösung ist. Nachmachen auf eigene Gefahr.