使用Python将文本文件打印到特定的打印机

时间:2015-03-09 12:24:27

标签: python windows printing

我想使用python将文本文件打印到本地打印机(名称:“XP-58”,类型:热pos打印机,操作系统:windows 8.1)。 最好的方法是什么? 我找到了this,但我无法找到办法。 最佳解决方案是这样的:

  1. currentprinter = X
  2. tempprinter =“XP-58”
  3. 打开文件“test.txt”
  4. 打印到tempprinter
  5. 将打印机设置为当前打印机
  6. 额外:您认为打印条形码是否可行? (不同的字体?)

    我尝试使用上面链接中的原始打印件,将其更改为功能但我的打印机上没有任何内容。这是我的代码

    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)
    

    但没有任何反应?我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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

RAW模式适用于打印机可以直接处理PCL或Postscript等数据的情况。 TEXT模式将使假脱机程序使用打印机在将其发送到打印机之前理解的语言生成假脱机文件。