【发布时间】:2016-11-05 19:35:23
【问题描述】:
我在使用 A4 打印机的 Windows 上有此代码。但是我有一台很小的打印机,当我打印一些东西时它不会打印任何东西,只会把票推出去。
尝试0:
import win32ui
X=0; Y=0
input_string = "Print 1234 test"
multi_line_string = input_string.split()
hDC = win32ui.CreateDC ()
hDC.CreatePrinterDC ('Dymo label printer')
hDC.StartDoc ('FILE NAME FILE NAME')
hDC.StartPage ()
for line in multi_line_string:
hDC.TextOut(X,Y,line)
#Y += 100
hDC.EndPage ()
hDC.EndDoc ()
TRY1:无法像以前一样打印:https://msdn.microsoft.com/en-us/library/windows/desktop/dd319099(v=vs.85).aspx
import win32ui
import win32con
import win32print
import win32gui
X=0
Y=0
input_string = "A390"
printer = win32print.GetDefaultPrinter()
hprinter = win32print.OpenPrinter(printer)
devmode = win32print.GetPrinter(hprinter, 2)["pDevMode"]
# change paper size and orientation
# constants are available here:
# http://msdn.microsoft.com/library/default.asp?
# url=/library/en-us/intl/nls_Paper_Sizes.asp
# number 10 envelope is 20
devmode.PaperSize = 20
# 1 = portrait, 2 = landscape
devmode.Orientation = 1
hdc = win32gui.CreateDC("WINSPOOL", printer, devmode)
dc = win32ui.CreateDCFromHandle(hdc)
dc.StartDoc ('test')
dc.StartPage ()
dc.TextOut(X,Y,input_string)
#for line in multi_line_string:
#hDC.TextOut(X,Y,line)
dc.EndPage ()
dc.EndDoc ()
尝试2:失败
import win32ui
import win32con
import win32print
import win32gui
printer = win32print.GetDefaultPrinter()
hprinter = win32print.OpenPrinter(printer)
devmode = win32print.GetPrinter(hprinter, 2)["pDevMode"]
devmode.PaperSize = 20
devmode.Orientation = 2
hDC = win32gui.CreateDC ("WINSPOOL", printer, devmode)
dc = win32ui.CreateDCFromHandle(hDC)
dc.StartDoc ('test')
dc.StartPage ()
#hDC.SetMapMode(MM_TEXT) # ERROR no MM_TEXT found...
font = win32ui.CreateFont({
"name": "Lucida Console",
"height": 50,
"weight": 50,
})
win32print.DocumentProperties(0, hprinter, '300LN1', None, None, 5)
dc.SelectObject(font)
dc.TextOut(10,10,"TEST...")
dc.TextOut(10,-10,"TEST..")
dc.EndPage ()
dc.EndDoc ()
TRY3:失败
import win32ui
import win32print
import win32con
INCH = 1440
hDC = win32ui.CreateDC ()
hDC.CreatePrinterDC (win32print.GetDefaultPrinter ())
hDC.StartDoc ("Test doc")
hDC.StartPage ()
hDC.SetMapMode (win32con.MM_TWIPS)
hDC.DrawText ("TEST", (0, INCH * -1, INCH * 8, INCH * -2), win32con.DT_CENTER)
hDC.EndPage ()
hDC.EndDoc ()
【问题讨论】:
-
嘿,您是否尝试打印:“0,1,2,3,4.5.......,99999”来确定页面中的位置?左角/中心/右角?否则我找不到小型打印机的任何东西。
-
我如何设置左角 x=0 在左边,y=0 表示在 A4 页面的顶部。但是当我用同一台小型打印机执行此操作时,它什么也没打印。
-
我们需要将页面尺寸设置为 50.8X25.4MM。那么 X=0 和 Y=0 应该可以工作。但是我们如何在 win32ui 上告诉 Python 页面大小不是 A4 而是其自定义页面大小为 50.8x25.4mm ?
-
是的,我知道...但我无法在文档中找到它,请不要使用大写锁定。
-
newcenturycomputers.net/projects/pythonicwindowsprinting.html - @Destrif,你能打开那个网址并制作他最后一部分的样本吗?让我检查一下这是否有效
标签: python windows winapi printing