Вы читаете bp
только один раз перед циклом. Затем в цикле вы получаете его вторую страницу через getPage(1)
и объединяете вещи с ней. Но так как он всегда из одного и того же объекта (bp
), каждая итерация будет сливаться с одной и той же страницей, поэтому все объединения, выполненные перед сложением.
Хотя я не нахожу никакого способа создания «глубокой копии» страницы в документах PyPDF2, он должен просто создать новый объект bp
для каждой итерации.
Где-то в readPDF
вы, должно быть, что-то сделали, когда открыли шаблон PDF в двоичный поток и затем передали его в PdfFileReader
. Вместо этого вы можете прочитать данные в переменную:
with open(filename, "rb") as f:
bp_bin = f.read()
И после этого создайте новый экземпляр PdfFileReader
для каждой итерации цикла:
for ind in df.index:
row = df.loc[ind]
bp = PdfFileReader(bp_bin)
pdfOperations(row, bp)
Это должно «сбрасывать» secondPage
каждый раз без каких-либо дополнительных затрат на ввод / вывод файла. Каждый раз выполняется только синтаксический анализ, но в зависимости от размера и содержимого файла, может быть, это занимает мало времени, и вы можете с этим смириться.