我正在使用 Epson FX2175 点阵打印机和 win32print python 库向打印机发出命令。打印完成后,纸张不会移动到下一个撕纸位置。
我尝试在最后发送 FF(换页)命令,但它使纸张前进太多,而不是像我的纸张尺寸(即 15.4 厘米)那样移动。纸张大小已在打印机首选项 > 纸张大小 > 用户定义中配置。
下面是我的python代码
import os, sys
import win32print
def formatData(args):
cnt = 1;
decimal_form_feed = 12
decimal_line_feed = 10
decimal_carriage_return = 13
byteArr = bytearray()
# Reverse feed
# byteArr.extend(bytes("\u001bj2", "utf-8"))
# byteArr.extend(bytes("\u001b$0", "utf-8"))
# ESC J Advance print position vertically
# param n where 0 <= n <=255
# Advances vertical position n/216 or n/180 inches
# Set page size in terms of line numbers
# byteArr.extend(bytes("\u001bC10", "utf-8"))
print(len(args))
while(cnt < len(args)):
if args[cnt]=="R":
temp = bytes (args[cnt+1], "utf-8")
byteArr.extend(temp)
#print(byteArr)
elif args[cnt]=="RB":
temp = bytes ("\u001bE"+args[cnt+1]+"\u001bF", "utf-8")
byteArr.extend(temp);
#print(byteArr)
elif args[cnt]=="D":
temp = bytes ("\u001b\u000e"+args[cnt+1]+"\u001b\u0012", "utf-8")
byteArr.extend(temp);
elif args[cnt]=="DB":
temp = bytes ("\u001b\u000e"+args[cnt+1]+"\u001b\u0012", "utf-8")
byteArr.extend(temp);
elif args[cnt]=="newline":
temp = bytes ("\n", "utf-8")
byteArr.extend(temp);
cnt = cnt+1
continue
elif args[cnt]=="lf":
mCnt = 0
while mCnt < int(args[cnt+1]):
mCnt = mCnt+1
byteArr.extend(bytes("\n", "utf-8"))
#byteArr.extend(bytes("\u001bJ1", "utf-8"))
elif args[cnt]=="rf":
mCnt = 0
while mCnt < int(args[cnt+1]):
byteArr.extend(bytes("\u001bj2", "utf-8"))
mCnt = mCnt+1
cnt = cnt+2;
byteArr.extend(decimal_carriage_return.to_bytes(2, 'big'))
byteArr.extend(decimal_form_feed .to_bytes(2, 'big'))
#byteArr.extend(decimal_carriage_return.to_bytes(2, 'big'))
#byteArr.extend(decimal_line_feed.to_bytes(2, 'big'))
print(byteArr)
mBytes = bytes(byteArr)
return mBytes
printer_name = win32print.GetDefaultPrinter ()
raw_data = formatData(sys.argv);
hPrinter = win32print.OpenPrinter (printer_name)
try:
hJob = win32print.StartDocPrinter (hPrinter, 1, (raw_data.decode("utf-8"), None, "RAW"))
try:
win32print.StartPagePrinter (hPrinter)
win32print.WritePrinter (hPrinter, raw_data)
win32print.EndPagePrinter (hPrinter)
finally:
win32print.EndDocPrinter (hPrinter)
finally:
win32print.ClosePrinter (hPrinter)
我使用本手册作为参考Epson EscP 手册参考
非常感谢任何帮助,因为我为此苦苦挣扎了将近 5 天。