Drucken unter Windows (simplewinprint.py)

Code-Stücke können hier veröffentlicht werden.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Patrick hat geschrieben: Gibt es eine Moeglichkeit, vor dem Druck den zu benutzenden Drucker auszuwaehlen?
Hi Patrick!

Du kannst den Druckernamen beim Initialisieren der Klasse Printer übergeben. Das ist allerdings alles was derzeit möglich ist.

Den Drucker-Auswahldialog von Windows kann ich leider nicht auf die Schnelle einbinden. Da habe ich im Moment noch zu wenig Informationen darüber, wie man so etwas machen kann.

Vielleicht hat jemand von euch einen Hinweis für mich.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Patrick
User
Beiträge: 49
Registriert: Montag 5. Juli 2004, 06:35
Wohnort: Berlin
Kontaktdaten:

Hab ich doch einen Beitrag vor dir. :lol:
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Patrick hat geschrieben:Hab ich doch einen Beitrag vor dir. :lol:
Hi Patrick!

Diesen Beitrag habe ich doch glatt übersehen. :oops:
Das mit der CLR kenne ich noch nicht. Mal sehen wie das mit .NET funktioniert...
Ich muss noch raus finden, ob das nur als Notlösung zu gebrauchen ist, oder ob ich damit rechnen kann, dass auf den meisten Computern .NET installiert ist. Wenn JA, dann eröffnen sich zusätzliche Möglichkeiten mit Python.
Obwohl die Einführung von .NET einer der Gründe war, warum ich zu Python wechselte.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

gerold hat geschrieben:Ich muss noch raus finden, ob das nur als Notlösung zu gebrauchen ist, oder ob ich damit rechnen kann, dass auf den meisten Computern .NET installiert ist. Wenn JA, dann eröffnen sich zusätzliche Möglichkeiten mit Python.
Obwohl die Einführung von .NET einer der Gründe war, warum ich zu Python wechselte.
Also auf meiner Kiste ist grad gar keine CLR installiert. Die 1.1 Runtime habe ich deinstalliert, da ich das SDK installieren wollte, ich dieses aber gerade nicht habe. Sonst habe ich noch Mono 1.0.6 und Mono 1.1.6, aber keines von beiden installiert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Leonidas hat geschrieben: Also auf meiner Kiste ist grad gar keine CLR installiert.
Hi!
Bei mir ist zwar .NET installiert, aber ich bekomme PythonNet nicht in Verbindung mit dem installierten Python zum Laufen. Kopiere ich, wie im Readme-File von PythonNet beschrieben, die beiden DLL's Python.Runtime.dll und CLR.dll in den Python-Ordner, dann stürzt Pythonwin.exe schon beim Importieren von CLR ab und python.exe kennt den Befehl "help()" nicht mehr. :?

Das ist aber kein Problem für mich! Es scheint im Moment so, dass die Sache noch nicht ausgereift genug ist, und deshalb suche ich nach einer anderen Lösung.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Patrick
User
Beiträge: 49
Registriert: Montag 5. Juli 2004, 06:35
Wohnort: Berlin
Kontaktdaten:

Also bei mir funktioniert das ziemlich gut. Bis auf die Tatsache, dass man eben hoellisch beim Verwenden von .NET Objekten aufpassen muss, da man natuerlich auch deren Fehler importiert. ;-)

Bekannte Probleme: Handle-Freigabe, Speicherprobleme
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Welche Python.NET Version hast du denn gerold? Heute habe ich in der Mailingliste gelesen, dass 1.0 RC1 rausgekommen ist. Versuchs doch mal damit..
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Leonidas hat geschrieben: Heute habe ich in der Mailingliste gelesen, dass 1.0 RC1 rausgekommen ist.
Hi Leonidas!

Werde ich mir ansehen. Danke für den Hinweis.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
be_veronic
User
Beiträge: 16
Registriert: Mittwoch 19. Januar 2005, 23:30

Hi Gerold,

Ich möchte deinen Skript für drucken einer Text Datei benutzen.Ich lese vom Datei Zeile für Zeile mache ein String und verwende dann print_rawtext.
Aber als neue Zeile bekommen ich nur ein komisches Symbol .

Kannst du mir helfen?
Danke.
Vero
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

be_veronic hat geschrieben: Ich möchte deinen Skript für drucken einer Text Datei benutzen.Ich lese vom Datei Zeile für Zeile mache ein String und verwende dann print_rawtext. Aber als neue Zeile bekommen ich nur ein komisches Symbol .
Hi Vero!

Verwende print_rawtext nur dann, wenn du mit dem Text auch Sonderkommandos (z.B. Kassenschublade öffnen oder Papier abschneiden) an den Drucker schicken möchtest.

Am besten wird wohl sein, wenn du einfach mal probierst, ob der Ausdruck funktioniert.

Code: Alles auswählen

>>> import simplewinprint
>>> p = simplewinprint.Printer()
>>> p.startdoc()
>>> p.print_textblock("Hallo Welt Zeile 1.")
>>> p.print_textblock("Hallo Welt Zeile 2.")
>>> p.enddoc()
>>> 
Bei diesem Test muss der Standarddrucker zwei Zeilen ausdrucken.

Hier noch ein Beispiel:
http://www.python-forum.de/viewtopic.php?p=18401#18401

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
be_veronic
User
Beiträge: 16
Registriert: Mittwoch 19. Januar 2005, 23:30

Hi Gerold,

Mein Problem ist wenn ich 'white spaces' Anfang der Zeile habe, die sind nicht anerkannt.

Die Zeilen fangen trozdem vom linke Seite an,und die leere Zeichen sind ignoriert.
Danke im voraus. :)
Vero
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

be_veronic hat geschrieben: Die Zeilen fangen trozdem vom linke Seite an,und die leere Zeichen sind ignoriert.
Hi Vero!

Du hast einen Bug entdeckt :shock: :shock:
Ich habe eine zusätzliche Prüfung einprogrammiert. Die neue Version steht ab sofort zur Verfügung :o

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
be_veronic
User
Beiträge: 16
Registriert: Mittwoch 19. Januar 2005, 23:30

Hallo Gerold,

Danke für deiner prompt Antwort.Jetzt macht er den 'indentation' aber nicht ganz korrekt.Für deinen Beispiel ich fange mit der Hallo Welt Zeile 2 wo 'o' von Hallo Welt Zeile 1 ist aber die fängt schon unter den erste 'l'an.

Ich wurde dir dankbar wenn du das regeln konntest.
Gruss,
Vero
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

be_veronic hat geschrieben: Danke für deiner prompt Antwort.Jetzt macht er den 'indentation' aber nicht ganz korrekt.Für deinen Beispiel ich fange mit der Hallo Welt Zeile 2 wo 'o' von Hallo Welt Zeile 1 ist aber die fängt schon unter den erste 'l'an.
Hi Vero!

Jetzt langsam wird es schwierig, deinen Ausführungen zu folgen. Bitte sei mir für diese Aussage nicht böse. Auch wenn es schwierig sein kann, bitte versuche dein Deutsch ein wenig aufzubessern. :roll:

Und jetzt zu deinem Problem. Es klingt so, als ob du eine proportionale Schrift, wie z.B. Arial oder Times New Roman einsetzt. Diese Schriften zeichnen sich dadurch aus, dass sie verschiedene Breiten pro Zeichen verwenden. Ein "W" verbraucht also mehr Platz als ein "I". Wenn du möchtest, dass jedes Zeichen exakt die gleiche Breite verwendet, dann musst du eine nicht proportionale Schrift wie z. B. Courier New oder Fixedsys verwenden.

Die Standardschrift stellst du so ein:

Code: Alles auswählen

>>> p.default_font_name = "Courier New"
>>> p.default_font_size = "11"
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
be_veronic
User
Beiträge: 16
Registriert: Mittwoch 19. Januar 2005, 23:30

Hi Gerold,

Danke für deine Vorschläge, as hat bei mir geklappt.Ich finde deiner Skript sehr nutzbar.

Ich bin dir nicht böse,ich arbeite an meinem Deutsch :oops:

Gruss,
Vero
Antworten