簡體   English   中英

通過Python以雙工模式打印PDF文件

[英]Print PDF file in duplex mode via Python

我在Python中有一個可打印PDF文件的腳本。
該腳本使用win32api.ShellExecute()可以正常工作,但是一切都很好,但是現在,我需要打印具有雙面內容的PDF文件,具體是用戶手冊。
我曾嘗試在win32print中設置雙面打印模式,但沒有任何效果,打印機仍然為我的PDF在2張紙上打印2頁,而不是在雙面紙上打印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)

知道為什么這行不通嗎? 謝謝。

嘗試運行以下代碼:

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導致OpenPrinter中的“訪問被拒絕”。
  2. 在我的計算機上,SetPrinter失敗,並顯示“訪問被拒絕”。 但是“雙工”設置正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM