Конкатенация нескольких Pdf с использованием PyPDF2 - PullRequest
2 голосов
/ 26 марта 2020

Я пытаюсь объединить несколько PDF-файлов в один. Ниже приведен мой код:

import PyPDF2
import os
import sys

if not sys.warnoptions:
    import warnings
    warnings.simplefilter("ignore")

pdf_path=r'path'
os.chdir(pdf_path)

output_pdf=input("Enter for output pdf: ")

#Get PDF list
pdfmerge=[]
for pdf_file in os.listdir(pdf_path):
    if pdf_file.endswith('.pdf'):
        pdfmerge.append(pdf_file)

pdfWriter = PyPDF2.PdfFileWriter()

#loop through all PDFs
for pdf_file in pdfmerge:
    pdfFileObj=open(pdf_file,'rb')
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

for pageNum in range(pdfReader.numPages):
    pageObj=pdfReader.getPage(pageNum)
    pdfWriter.addPage(pageObj)

#Save PDF
pdfOutput=open(output_pdf+'.pdf','wb')

pdfWriter.write(pdfOutput)
pdfOutput.close()

Этот код дает выходной pdf, но только последний pdf в папке объединяется в выходной pdf, а остальные нет. Что я могу изменить в коде, чтобы объединить все PDF-файлы в папке, а не только последний PDF-файл

1 Ответ

1 голос
/ 26 марта 2020

Вы пропускаете отступ при переборе страниц, оно должно выглядеть так:

for pdf_file in pdfmerge:
    pdfFileObj=open(pdf_file,'rb')
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

    for pageNum in range(pdfReader.numPages):
        pageObj=pdfReader.getPage(pageNum)
        pdfWriter.addPage(pageObj)
...