|
|
Drucken von Textdateien aus Windows |
|---|
Das ist ja nun das Einfachste in einer Programmiersprache, mal ein
bissel Text schnell auszudrucken. Könnte man denken. Aber
weit gefehlt. Anfangs war es mir garnicht gleich aufgefallen, dass in
allen Pythonbüchern das Thema Drucken garnicht so recht vorkam.
Python war so schön, einfach und elegant. Drucken wurde auch nicht
gleich gebraucht. Das Resultat wurde in eine Datei geschrieben und die
konnte man ja nach Belieben anderweitig ausdrucken.
Wer aber mal ein geschlossenes Programm schreiben möchte, braucht
mitunter eben auch eine Druckfunktion. Zuerst fiel es mir auf, als ich
mit dem kleinen Python-Texteditor rumexperimentiert habe. Bei Tkinter
findet man da nicht viel, und das, was man mit dem Canvas-Widget machen
kann führt zu einer Postscript-Datei, die unter Linux ideal ist.
Unter Windows sollte es anders gehen. Und wie geht es vielleicht
plattformübergreifend? Anscheinend erstmal garnicht.
Nun, vorneweg gesagt, ich habe die große Superlösung hier noch nicht. Wir arbeiten weiter drann. Aber die paar Fragmente, die ich bisher aufgetrieben habe, sollen hier erstmal zur Diskussion gestellt werden.
Also versuchen wir es mal unter Windows. Zuerst habe ich die normalen Einfälle probiert, wie z.B.
import os
os.system('type textdatei > lpt1')
weil solche Sachen ja einst unter DOS auch gingen. Aber weit gefehlt! Es ging nicht! Lpt1 läßt sich anscheinend unter Win32 garnicht mehr direkt ansteuern. Auch statt type z.B. copy textdatei lpt1 funzte nicht. Also schauen wir notgedrungen in Richtung WinAPI. Dazu muss aber zuvor neben Python eine passende Win32 - Ergänzung und Pythonwin installiert sein.
Dann schauen wir uns mal diesen Quelltext an.
Nach dem Start ist zu sehen, dass verschiedene Textfarbe entstehen. Die Zeilenweiterschaltung wird in einer Schleife automatisch weitergezählt.
Einschub für Fortgeschrittene:
Der Ausdruck zeigt, dass die Textposition in Pixeln gemessen wird, denn der Zeilenabstand ist hier 10 Pixel. Die Textfarbe ist laut Docu ein 32-Bit-Wert. Die Zahlenwerte für verschiedene schöne Grundfarben habe ich leider nicht vorzuliegen. Man kann diese aber selbst ausprobieren, indem man die Funktion RGB (siehe Quelltext) anwendet und die zurückgegebenen Zahelnwerte notiert und verwendet. Die Funktion RGB rechnet die Anteile von rot, grün, blau um in den gesuchten 32-Bit Wert.