Протестируйте неправильно сформированные PDF-файлы в PyPDF до написания - PullRequest
0 голосов
/ 19 октября 2019

У меня есть несколько PDF-файлов, которые прекрасно читаются в PdfFileReader, но когда я собираюсь записать их в новый файл, они выдают что-то вроде:

PdfReadWarning: Invalid stream (index 6) within object 29 0: Stream has ended unexpectedly [pdf.py:1575]

Это происходит только во времянаписать, что слишком поздно в рабочем процессе, чтобы восстановить изящно. Это происходит даже при установленном Strict = False. Могу ли я что-нибудь сделать, чтобы проверить плохие PDF-файлы заранее? Сейчас самое лучшее, что я могу придумать, это:

try:
    p = PdfFileReader('bad_stream_file.pdf',strict=False)
    merger=PdfFileMerger()
    merger.append(p)
    new_dummy_file = io.BytesIO()
    merger.write(new_dummy_file)
except:
    #reprocess file with ghostscript and try again.

Кстати, я пытался повозиться с кодом PyPDF2, и похоже, что количество косвенных объектов увеличивается из PdfFileReader. Писателю с этими проблемными файлами. Кроме того, с принудительным применением Strict = False он передает NullObject, который затем передается в функцию stream.read, что впоследствии вызывает ошибку разницы о том, что он не является целым числом.

...