Ваша логика не имеет большого смысла, в нескольких местах.
Во-первых, проблема, о которой вы спрашиваете.Посмотрите, что вы делаете с pdf_file
и pdf_reader
:
- Откройте файл как
pdf_file
. - Создайте
PdfFileReader
, прикрепленный к pdf_file
как pdf_reader
. - Повторно открыть тот же файл, что и
pdf_file
.Это освобождает старый файл, превращая его в мусор, поэтому он скоро (обычно сразу) закрывается. - Неоднократно вызывайте
getPage(:-1)
для pdf_reader
, который, вероятно, присоединяется к закрытому файлу в первый рази определенно каждый раз после этого. - Создайте новый
PdfFileReader
с файлом, который мы открыли на шаге 3, как pdf_reader
. - Закройте
pdf_file
, который вы только что открыли, поэтомуpdf_reader
теперь определенно ссылается на закрытый файл. - Повторите шаги 2-6.
Вам необходимо выполнить шаг 4 до шага 3, или после шага 5, или вынеобходимо иметь две разные переменные pdf_file
, чтобы вы могли открыть новую, все еще используя старую.Я не уверен, какой из трех вы хотите, но как есть, вы читаете из закрытого файла.
Но я думаю, что было бы проще реорганизовать вещи, чтобы исключить шаг 1 - вместо попыткичтобы открыть вещи перед циклом, а затем снова открыть вещи в конце каждого цикла, вы просто открываете вещи в начале цикла, там, где вам это нужно.
Во-вторых, ваш писатель так же, каксмущенный.Посмотрите, что вы делаете с output_file
и pdf_writer
:
- Создайте
PdfFileWriter
как pdf_writer
. - Неоднократно добавляйте к нему страницы.
- Откройте выходной файл как
output_file
. - Создайте новый
PdfFileWriter
как pdf_writer
, отбрасывая все, что вы записали в старый. - Запишите пустой сейчас
pdf_writer
на output_file
. - Повторите шаги 2-5.
Опять же, вам нужно выполнить шаг 5 где-то еще, вероятно, до шага 4. Но, опять же, это, вероятно, многоПроще реорганизовать вещи, чтобы исключить шаг 1.