Я пытаюсь следовать примеру кода, который нашел здесь , и я немного изменил код, чтобы он выглядел так в моем основном приложении
def send_to_printer(pdffile):
acrobat = r'C:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat\Acrobat.exe'
# '"%s"'is to wrap double quotes around paths
# as subprocess will use list2cmdline internally if we pass it a list
# which escapes double quotes and Adobe Reader doesn't like that
cmd = '"{}" /N /T "{}" "{}"'.format(acrobat, pdffile, printer_name)
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = proc.communicate()
exit_code = proc.wait()
Если я запускаю этот фрагмент кода самостоятельно и передаю его в формате pdf, я пытаюсь напечатать, он работает довольно хорошо.Когда я пытаюсь вызвать его из основного приложения, это вызывает проблемы.По сути, я собираю кучу отдельных PDF-файлов и собираю их вместе, а затем печатаю, чтобы они были двухсторонними.
Код, вызывающий этот код, выглядит следующим образом.
output1 = PdfFileWriter()
for pdf in args[:len(args)//2]:
page = PdfFileReader(pdf).getPage(0)
output1.addPage(page)
outputStream1 = open('front_pages_to_print.pdf', 'wb')
output1.write(outputStream1)
outputStream1.close()
send_to_printer('front_pages_to_print.pdf')
Когда я запускаю приведенный выше код перед отправкой его на принтер, он печатает первые страницы и затем зависает.Я также пытался просто вызывать отдельные файлы самостоятельно, но это приводит к тому же самому поведению.Он печатает первую страницу и зависает.Я немного прочитал об этом, и, предположительно, использование proc.wait () может вызвать тупик, если вы не используете commuicate (), как упоминалось здесь .Однако в коде, за которым я следую, есть строка stdout, stderr = proc.communicate (), который, как я предполагаю, обрабатывает это?Я должен быть честным, хотя, я пытаюсь понять код и не совсем понимаю.У кого-нибудь есть какие-либо предложения по этому поводу?
Спасибо
Редактировать - Это в Windows 10. Я забыл упомянуть об этом.