我试图打印一个pdf文件从Python与模块win32print
,但唯一的方式,我可以打印成功是一个文本。
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”文件,而不是打印文本。
我也尝试了**win32api.ShellExecute(0, "print", filename, None, ".", 0)
**,但它不工作,在一些测试后,如(getprinter,getdefault,setprinter,setdefaultprinter),它似乎没有连接打印机。所以在这种方式下,我不能工作。
这是我用的密码!
win32print.SetDefaultPrinter(hPrinter)
win32api.ShellExecute(0, "print", filename, None, ".", 0)
3条答案
按热度按时间tjvv9vkg1#
备注:
1.您可以使用DevMode对象(GUI代码示例)更改打印机属性,如彩色/黑色、缩放比例、质量等。
1.提供文件名的绝对路径
1.退出脚本之前,请给予足够的时间来处理作业。
虽然不能直接回答这个问题,但我还是忍不住用
tkinter
制作了一个GUI。它可以很容易地更改为选择一个目录--以及其中的所有文件--而不是一个文件。GIST
第一次
来源:
PS:我可能不会赢得奖金,但我确实很喜欢制作GUI。
tkinter
布局是最难的部分!gfttwv5a2#
这是我用过的代码,它工作正常。
lqfhib0f3#
你可以试试
此方法接受String,而不是您试图传递给它的打印机对象。