Вы можете рассмотреть возможность изменения
popen = Popen(command_args, stdout=PIPE, stderr=PIPE)
pdf_contents = popen.stdout().read()
# ...
response = ...
до
pdf_contents = subprocess.check_output(command_args.split())
response = ...
или в более старых версиях:
process = Popen(command_args.split(), stdout=PIPE, stderr=PIPE)
pdf_contents = process.stdout.read()
response = ...
Я предлагаю вам взглянуть на функцию check_output .
РЕДАКТИРОВАТЬ: Кроме того, не вызывайте terminate (), так как он убьет процесс, не дожидаясь его завершения, что может привести к повреждению PDF. Вам в основном нужно будет использовать wait (), так как он будет ждать завершения процесса (и, следовательно, выводить все, что должен выводить). При использовании функции check_output () вам не нужно об этом беспокоиться, так как она ожидает завершения процесса по умолчанию.
Кроме этого, именование переменной с тем же именем, что и у модуля (я говорю о временном файле), является плохой идеей. Я предлагаю вам изменить его на tmpfile и проверить NamedTeoraryFile s, так как его безопаснее использовать, чем то, что вы делаете сейчас.