windows 在Python中将文本文件打印到特定打印机

dwbf0jvd  于 2023-01-31  发布在  Windows
关注(0)|答案(3)|浏览(297)

我想将文本文件打印到本地打印机(名称:“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)

但什么都没发生我哪里做错了

euoag5mw

euoag5mw1#

要通过打印后台处理程序API将文本发送到打印机,您需要使用TEXT模式而不是RAW

hJob = win32print.StartDocPrinter (hPrinter, 1, ("Test text document", None, "TEXT"))

RAW模式适用于打印机可以直接处理的数据(如PCL或Postscript)。TEXT模式将导致后台打印程序在将文件发送到打印机之前使用打印机理解的语言生成后台打印文件。

2jcobegt

2jcobegt2#

python中的txt打印特定打印机

import win32print
import win32ui

x = 0
y = 50
printer_name = "EPSON L382 Series (копия 1)"
# if your printer is standard, replace the printer_name:
# win32print.GetDefaultPrinter()

fd = open("file.txt", "r", encoding = "utf-8")
input_string = fd.read()
multi_line_string = input_string.splitlines()

hDC = win32ui.CreateDC()
hDC.CreatePrinterDC()
hDC.StartDoc("Printing...")
hDC.StartPage()
for line in multi_line_string:
hDC.TextOut(x, y, line)
y+=50
hDC.EndPage()
hDC.EndDoc()
fd.close()
6ju8rftf

6ju8rftf3#

你需要从print prn_txt(txt)更改你的最后一行
到prn_txt(文本)
print命令写入控制台,与打印到打印机无关
备注:win32print.StartDocPrinter(hPrinter,1,(“原始数据测试”,None,“RAW”))是正确的,因为“原始数据测试”只是将显示在Windows打印机控制台中的打印作业的名称。

相关问题