Seite 1 von 1

SimpleWinPrint.py und Win32Print

Verfasst: Montag 12. März 2007, 21:57
von Sr4l
SimpleWinPrint.py (von Gerold)
Win32Print (aus Standard Biliothek)

- Hallo ich kann mit win32print schon gut drucken alles kein Problem (Habe mir auch SimpleWinPrint.py angeschaut). Ich komme jedoch nicht weiter beim ändern der Einstellungen wie Hochkant und Quer sowie die Größe: A4, A3, A2, A1 oder A0.
- Dank PIL kann ich die Größe meiner TIF Datein heraus finden und auch von A3 auf A4 konvertieren o.ä. falls nötig.

Nur ich komme nicht über A4 Hochkant hinweg.
Kann ich das mit win32print lösen? A3, Quer z.B

Kann ich die PIL zum drucken von Bildern verwenden?
Oder andere Module?

Bitte Hinweise, Ideen, weiter führende Links. Danke


PS.: Beim Drucken geht es nur um Bilddateien (erstmal zumindestens)

Verfasst: Montag 12. März 2007, 22:08
von Leonidas
win32print ist übrigens nicht in der stdlib, das gehört nämlich zu pywin32. Zum angenehmen Drucken solltest du dir die Druckfunktionen von wxPython ansehen, da ist vermutlich eher was interessantes für dich dabei als in pywin32 - so wie ich die WinAPI kenne.

Verfasst: Donnerstag 15. März 2007, 18:07
von Sr4l
Mit wxPython kann ichs drucken, habe nur ein Problem das ich nicht die Eigenschaften voreinstellen kann.
Ich möchte aber unbedingt alles voreinstellen damit der user sich die zeit spart. Die Daten habe ich schon vorliegen.

Gibts dazu Ideen?


wxPython Drucken aus dem Wiki:
http://wiki.wxpython.org/index.cgi/Prin ... rinting%29

Verfasst: Donnerstag 29. März 2007, 08:33
von Sr4l
Ich habe gearde etwas gefunden um unter Windows (scheinbar) perfekt drucken zu können folgende Seite beschäftigt sich mit der WinAPI.

http://tgolden.sc.sabren.com/python/win ... print.html

Ich poste das falls jemand einmal die Forum suche benutzt und damit ich wenn ich nachhause komme selber den Link noch finde ;-)

Viele Grüße von der Arbeit aus :-)

Verfasst: Donnerstag 29. März 2007, 12:01
von pyStyler
dann mal gleich ein Primitives beispiel mit Tkinter

Code: Alles auswählen

import tempfile
import win32api
import Tkinter as tk
import time
import sys

NAME = 'Mustermann'
VORNAME = 'Max'
STRASSE = 'Muster-Str. 23/5'
PLZ = '101010'
ORT = 'Musterort'

OBEN = '='*30
UNTEN = '='*30
text='''
%s
=	Meine Adresse:\n=
=	%s %s           
=	%s               
=	%s              
=	%s               
%s\n\n\n\n\n 
%s
''' % ( OBEN, NAME, VORNAME, STRASSE, PLZ, ORT, UNTEN ,time.ctime())

mfont= ('arial',25, 'bold')

class PrintFile:
	def onPrintFile(self):
		filename = tempfile.mktemp('tkp.txt') 
		open(filename, 'w').write(text)
		win32api.ShellExecute(0, "print", filename, None, ".", 0)
			
class tkApp:
	def __init__(self, master):
		self.master=master
		self.printer = PrintFile()

		tk.Button(self.master, 
					text='OnPrint', 
					font=mfont,
					command=self.OnPrint).pack(side=tk.LEFT,
					expand=tk.YES, 
					fill=tk.BOTH, padx=20, pady=20)
					
		tk.Button(self.master, text='OnClose', font=mfont,
					command=self.OnClose).pack(side=tk.LEFT,
					fill=tk.BOTH, expand=tk.YES, padx=20, pady=20)
					
	def OnPrint(self):
		self.printer.onPrintFile()
	def OnClose(self):
		sys.exit()
		
def _main():
	root = tk.Tk()
	root.geometry('550x200')
	app = tkApp(root)
	root.mainloop()
	
if __name__=='__main__':
	_main()

Verfasst: Donnerstag 29. März 2007, 15:35
von Sr4l
Wie ich eingangs geschreiben habe geht es mir hauptsächlich um die einstellung von Hoch und Quer sowie die Papier größe A3 und größer.

Re: SimpleWinPrint.py und Win32Print

Verfasst: Donnerstag 22. Juli 2021, 14:48
von ChuckBor1s
Moin nach 14 Jahren habe ich das gleiche Anliegen. Das drucken mit Din A6 möchte ich. Nun bin schon seit einem Monat dran.
Habe hier auch schon einen Post dazu gemacht. viewtopic.php?f=1&t=52486

devmode = win32print.GetPrinter(hprinter, 2)["pDevMode"]

devmode.PaperSize = win32con.DMPAPER_A4 ###Genau das hat mir gefehlt
# 1 = portrait, 2 = landscape
Dachte etwas gefunden zu haben aber war nichts bzw. noch zu hoch für mich.
Da kommen dann Fehlermeldungen. Aber kann auch bei mir der Fehler sein.
Bin noch Anfänger. Gibt es im Jahr 2021 schon eine Lösung dafür oder wurde das Problem anders gelöst?