Тихая печать PDF в Python - PullRequest
       32

Тихая печать PDF в Python

14 голосов
/ 21 декабря 2010

Я пытаюсь напечатать PDF с помощью Python, не открывая приложение для просмотра PDF (Adobe, Foxit и т. Д.).Мне также нужно знать, когда печать завершена (чтобы удалить файл).

Здесь Я нашел эту реализацию :

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

1 Ответ

20 голосов
/ 21 декабря 2010

Я предлагаю вам установить GSView и GSPrint и установить 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.

...