使用win32print的Python打印pdf文件 [英] Python print pdf file with win32print

查看:2138
本文介绍了使用win32print的Python打印pdf文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用模块win32print从Python打印pdf文件,但是唯一能够成功打印的方法就是文本.

I'm trying to print a pdf file from Python with module win32print but the only way I can print success is a text.

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)

因此,除了打印文本外,我还需要打印"test.pdf"文件.

So instead of printing a text I need to print the "test.pdf" file.

我也尝试过使用 win32api.ShellExecute(0, "print", filename, None, ".", 0) ,但是它不起作用,经过一些测试(例如,getprinter,getdefault,setprinter,setdefaultprinter)之后,似乎没有连接打印机.因此,以这种方式我无法工作.

I also tried with win32api.ShellExecute(0, "print", filename, None, ".", 0) but it's not working, after some test like (getprinter, getdefault, setprinter, setdefaultprinter) it seems not to be attaching the printer. So at this way I can't get working.

这是我使用的代码!

win32print.SetDefaultPrinter(hPrinter)
win32api.ShellExecute(0, "print", filename, None,  ".",  0)

推荐答案

这是我使用的代码,可以正常工作.

This is the code I have used and it works correctly.

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的Python打印pdf文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆