【问题标题】:Print PDF file in duplex mode via Python通过 Python 以双面模式打印 PDF 文件
【发布时间】:2018-05-06 06:24:30
【问题描述】:

我有一个打印 PDF 文件的 Python 脚本。
该脚本使用win32api.ShellExecute() 工作,一切都很好,但现在,我需要打印具有双面内容的 PDF 文件,具体的用户手册。
我已经尝试在 win32print 中设置双面模式,但没有任何效果,打印机仍然在 2 张纸上为我的 PDF 打印 2 页,而不是在双面纸上打印两页。 打印机在其他应用程序中使用此模式,但使用 python 脚本效果不佳。 这是我用来打印的代码的一部分:

name = win32print.GetDefaultPrinter()
printdefaults = {"DesiredAccess": win32print.PRINTER_ALL_ACCESS}
handle = win32print.OpenPrinter(name, printdefaults)
level = 2
attributes = win32print.GetPrinter(handle, level)
attributes['pDevMode'].Duplex
attributes['pDevMode'].Duplex = 1
win32print.SetPrinter(handle, level, attributes, 0)
win32print.GetPrinter(handle, level)['pDevMode'].Duplex
win32api.ShellExecute(0,'print','file.pdf','.','/route',0)

知道为什么这不起作用吗?谢谢。

【问题讨论】:

    标签: python pdf printing pywin32 shellexecute


    【解决方案1】:

    尝试运行这段代码:

    import win32api
    import win32print
    
    name = win32print.GetDefaultPrinter()
    
    #printdefaults = {"DesiredAccess": win32print.PRINTER_ACCESS_ADMINISTER}
    printdefaults = {"DesiredAccess": win32print.PRINTER_ACCESS_USE}
    handle = win32print.OpenPrinter(name, printdefaults)
    
    level = 2
    attributes = win32print.GetPrinter(handle, level)
    
    print "Old Duplex = %d" % attributes['pDevMode'].Duplex
    
    #attributes['pDevMode'].Duplex = 1    # no flip
    #attributes['pDevMode'].Duplex = 2    # flip up
    attributes['pDevMode'].Duplex = 3    # flip over
    
    ## 'SetPrinter' fails because of 'Access is denied.'
    ## But the attribute 'Duplex' is set correctly
    try:
        win32print.SetPrinter(handle, level, attributes, 0)
    except:
        print "win32print.SetPrinter: set 'Duplex'"
    
    res = win32api.ShellExecute(0, 'print', 'test.pdf', None, '.', 0)
    
    win32print.ClosePrinter(handle)
    

    它适用于我的电脑:Windows 10、Python 2.7.14、pypiwin32-220

    注意事项:

    1. 在我的计算机上 PRINTER_ACCESS_ADMINISTER 导致“访问被拒绝” 打开打印机。
    2. 在我的计算机上,SetPrinter 失败并显示“访问被拒绝”。但是“双工”是 设置正确..

    【讨论】:

    • 你发布的时候我还没有看到这个,我现在回到这个脚本,然后回来搜索信息并看到这个。双工模式设置为 3 工作正常。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 2020-02-22
    • 2014-07-22
    • 2014-12-21
    相关资源
    最近更新 更多