使用Python将打印作业发送到USB打印机

| 我可以从PDF,PRN或PS文件开始。如何使用Python将其发送到USB打印机?我应该从哪个模块开始?     
已邀请:
        听起来好像您正在使用Windows,所以让我们开始吧-如果您使用的是Linux,答案就会改变。 在Windows中有两种打印方法。第一种最常见的方法是通过Windows GDI界面发送单独的绘图命令。为此,您必须在选择正确的颜色和字体时,将页面上的每个单独元素放置在正确的位置(文本字符串,图像和形状)。如果您自己生成数据,则很容易;如果您必须解析正在读取的文件,则要困难得多。 另一种选择是以“原始”模式发送到打印机,在该模式下打印机驱动程序实际上被绕过了。为此,打印机必须本机理解您提供给它的字节流。有一些打印机本身了解Postscript,但是我不确定PDF,并且PRN不是标准格式。 我从来没有亲自通过Python进行过原始打印,但是这里有一个短代码示例链接(以及对预期问题的理解):http://bytes.com/topic/python/answers/ 512143打印原始Postscript数据窗口     
        据我所知,这是两个可用的软件包: pkipplib win32print     
        
import wx
import win32api
import win32print
class ComboBoxFrame(wx.Frame):
    def __init__(self):
        # creates a drop down with the list of printers available
        wx.Frame.__init__(self, None, -1, \'Printers\', size=(350, 300))
        panel = wx.Panel(self, -1)
        list=[]
        #Enum printers returns the list of printers available in the network
        printers = win32print.EnumPrinters(
            win32print.PRINTER_ENUM_CONNECTIONS
            + win32print.PRINTER_ENUM_LOCAL)
        for i in printers:
            list.append(i[2])
        sampleList = list
        wx.StaticText(panel, -1, \"Please select one printer from the list of printers to print:\", (15, 15))
        self.combo =wx.ComboBox(panel, -1, \"printers\", (15, 40), wx.DefaultSize,sampleList, wx.CB_READONLY )
        btn2 = wx.Button(panel, label=\"Print\", pos=(15, 60))
        btn2.Bind(wx.EVT_BUTTON, self.Onmsgbox)
        self.Centre()
        self.Show()

    def Onmsgbox(self, event):
        filename=\'duplicate.docx\'
        # here the user selected printer value will be given as input
        #print(win32print.GetDefaultPrinter ())
        win32api.ShellExecute (
          0,
          \"printto\",
          filename,
          \'\"%s\"\' % self.combo.GetValue(),
          \".\",
          0
        )
        print(self.combo.GetValue())


if __name__ ==\'__main__\':
    app = wx.App()
    ComboBoxFrame().Show()
    app.MainLoop()
    

要回复问题请先登录注册