我想将文本文件打印到本地打印机(名称:“XP-58”,类型:热敏POS打印机,操作系统:windows 8.1)使用python。什么是最好的方法来做它?我找到了this,但我找不到一个方法来做它。一个最佳的解决方案将是这样的:
1.当前打印机= X
1.临时打印机=“XP-58”
1.打开文件“test.txt”
1.打印到临时打印机
1.将打印机设置为当前打印机
一个额外的:你认为这是可能的打印条形码?(不同的字体?)
我试图使用原始打印从上面的链接,改变它的功能,但我没有得到我的打印机上的任何东西。这里是我的代码
import os, sys
import win32print
printer_name = win32print.GetDefaultPrinter ()
hPrinter = win32print.OpenPrinter (printer_name)
def prn_txt(text):
if sys.version_info >= (3,):
raw_data = bytes (text, "utf-8")
else:
raw_data = text
try:
hJob = win32print.StartDocPrinter (hPrinter, 1, ("test of raw data", None, "RAW"))
try:
win32print.StartPagePrinter (hPrinter)
win32print.WritePrinter (hPrinter, raw_data)
win32print.EndPagePrinter (hPrinter)
finally:
win32print.EndDocPrinter (hPrinter)
finally:
win32print.ClosePrinter (hPrinter)
txt = "blabla"
print prn_txt(txt)
但什么都没发生我哪里做错了
3条答案
按热度按时间euoag5mw1#
要通过打印后台处理程序API将文本发送到打印机,您需要使用
TEXT
模式而不是RAW
:RAW
模式适用于打印机可以直接处理的数据(如PCL或Postscript)。TEXT
模式将导致后台打印程序在将文件发送到打印机之前使用打印机理解的语言生成后台打印文件。2jcobegt2#
python中的txt打印特定打印机
6ju8rftf3#
你需要从print prn_txt(txt)更改你的最后一行
到prn_txt(文本)
print命令写入控制台,与打印到打印机无关
备注:win32print.StartDocPrinter(hPrinter,1,(“原始数据测试”,None,“RAW”))是正确的,因为“原始数据测试”只是将显示在Windows打印机控制台中的打印作业的名称。