Тихая печать PDF-файла на Python

Я пытаюсь распечатать 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


person bluish    schedule 21.12.2010    source источник


Ответы (1)


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

person codeape    schedule 21.12.2010
comment
ОТЛИЧНЫЙ!! Решил эту проблему, мучившую меня днями. Я добавляю, что требуется установить оба GhostScript (серверная часть, загружаемая с pages.cs.wisc. edu / ~ ghost) и GSView (интерфейс, который включает GSView и GSPrint, загружаемый по первой ссылке codeape) - person bluish; 21.12.2010
comment
Да, набор инструментов Ghostscript - это то, что вам нужно. Стоит отметить, что почти все решения для печати для Linux и других Unix в настоящее время так или иначе используют программы GS. - person jsbueno; 21.12.2010
comment
Спасибо за это. Я распечатал свой txt-файл с последовательностями esc на принтере, созданном pcl, преобразовал его в pdf и напечатал без звука с помощью ghostscript на принтере без PCL :) - person Hrvoje T; 19.06.2017
comment
Должен ли я использовать gsprint в коммерческом программном обеспечении? - person Jisson; 04.10.2019
comment
каково решение для автоматической печати Microsoft DOC / DOCX? - person oyster; 19.01.2021
comment
и как настроить печать на обеих сторонах бумаги, не устанавливая это значение по умолчанию для принтера - person oyster; 19.01.2021
comment
Параметры gsprint.exe задокументированы в файле gsprint.html внутри установленных файлов. Варианты для двусторонней печати - -duplex_vertical и -duplex_horizontal, я полагаю. - person codeape; 19.01.2021
comment
Что касается doc / docx, я думаю, что нет простого решения. - person codeape; 19.01.2021