2017-11-22 175 views
0

私はPythonでPDFファイルを印刷するスクリプトを用意しています。
スクリプトはwin32api.ShellExecute()を使って動作しますが、すべて問題はありませんが、今は両面の内容のPDFファイル、ユーザーマニュアルを具体的に印刷する必要があります。
二重モードをwin32printで設定しようとしましたが、何も動作しません。プリンタは、両面シートの2ページではなく、2枚の用紙を2枚印刷します。 他のアプリケーションではこのモードで動作しますが、pythonスクリプトはうまく動作しません。 これは私が印刷に使用されるコードの一部です:これは著作ない理由Pythonを使用して二重モードでPDFファイルを印刷

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) 

任意のアイデア?ありがとう。このコードを実行するには

答えて

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 OpenPrinterで「アクセスが拒否されました」を引き起こします。
  2. 私のコンピュータでは、SetPrinterは「アクセスが拒否されました」で失敗します。しかし、 'Duplex'は が正しく設定されています。
+0

あなたが投稿したときに私はこれを見たことがありません、今このスクリプトに戻り、これを見てください。 デュプレックスモードが3に設定されていると正しく動作します。 ありがとう! –

関連する問題