14

PDF ビューアー アプリケーション (Adobe、Foxit など) を開かずに、Python で PDF を印刷しようとしています。印刷がいつ終了したか (ファイルを削除するため) も知る必要があります。

ここで私はこの実装を見つけました:

import win32ui, dde, os.path, time
from win32api import FindExecutable
from os import spawnl, P_NOWAIT
...
pd = "C:\\temp\\test.pdf"
pdbits = os.path.split(pd)
readerexe = FindExecutable(pdbits[1],pdbits[0])

spawnl(P_NOWAIT,readerexe[1],"DUMMY") #I added "DUMMY" to avoid a weird error

time.sleep(2)

s = dde.CreateServer()
s.Create('')
c = dde.CreateConversation(s)
c.ConnectTo('acroview', 'control')

c.Exec('[FilePrintSilent("%s")]' % (pd,))

s.Destroy()

ConnectToただし、次の行でこの例外がスローされます。

dde.error: ConnectTo failed

誰かがそれを解決する方法を知っていますか? または、サイレント印刷用の別のソリューションがありますか? またはリストで参照ConnectToへのリンクを提供できますか?それについてウェブ上で何も見つけることができませんでした。

対応: Python 2.7、Windows 7、Acrobat Reader 10.0

4

1 に答える 1

21

GSViewGSPrintをインストールし、シェルアウトしgsprint.exeて PDF を印刷することをお勧めします。

p = subprocess.Popen([r"p:\ath\to\gsprint.exe", "test.pdf"], 
                     stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
print stdout
print stderr

私はこれを工業用ラベル印刷ソリューションで使用しましたが、うまく機能します。

gsprint.exeプログラムが終了すると (つまり、 を呼び出した後) communicate、pdf ファイルを削除できます。

于 2010-12-21T11:52:53.200 に答える