Python用win32prin打印pdf文件

2024-09-28 22:25:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用模块win32print从python打印一个pdf文件,但是我可以成功打印的唯一方法是文本。在

hPrinter = win32print.OpenPrinter("\\\\Server\Printer")
    filename = "test.pdf"
    try:
        hJob = win32print.StartDocPrinter(hPrinter, 1, ('PrintJobName',None,'RAW'))
        try:
            win32api.ShellExecute(0, "print", filename, None,  ".",  0)
            win32print.StartPagePrinter(hPrinter)
            win32print.WritePrinter(hPrinter, "test") #Instead of raw text is there a way to print PDF File ?
            win32print.EndPagePrinter(hPrinter)
        finally:
            win32print.EndDocPrinter(hPrinter)
    finally:
        win32print.ClosePrinter(hPrinter)

所以我不需要打印文本,而是要打印“测试.pdf“文件。在

我也试过使用win32api.ShellExecute(0, "print", filename, None, ".", 0)但是没有工作,经过一些测试,比如(getprinter,getdefault,setprinter,setdefaultprinter)它似乎没有连接打印机。这样我就不能工作了。在

这就是我用过的密码!在

^{pr2}$

Tags: 模块文件test文本nonepdffilenameprint
2条回答

这是我使用过的代码,它可以正常工作。在

name = win32print.GetDefaultPrinter() # verify that it matches with the name of your printer
printdefaults = {"DesiredAccess": win32print.PRINTER_ALL_ACCESS} # Doesn't work with PRINTER_ACCESS_USE
handle = win32print.OpenPrinter(name, printdefaults)
level = 2
attributes = win32print.GetPrinter(handle, level)
#attributes['pDevMode'].Duplex = 1  #no flip
#attributes['pDevMode'].Duplex = 2  #flip up
attributes['pDevMode'].Duplex = 3   #flip over
win32print.SetPrinter(handle, level, attributes, 0)
win32print.GetPrinter(handle, level)['pDevMode'].Duplex
win32api.ShellExecute(0,'print','manual1.pdf','.','/manualstoprint',0)

你可以试试

win32print.SetDefaultPrinter("\\\\Server\Printer")

此方法接受字符串,而不是您试图传递的打印机对象。在

相关问题 更多 >