Ви можете використовувати клас PyPdf2 s PdfMerger.
З'єднання файлів
Ви можете просто об'єднати файли, використовуючи appendметод.
from PyPDF2 import PdfFileMerger
pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file4.pdf']
merger = PdfFileMerger()
for pdf in pdfs:
merger.append(pdf)
merger.write("result.pdf")
merger.close()
Замість цього ви можете передавати файлові ручки замість шляхів до файлів.
Об’єднання файлів
Якщо ви хочете більш детально контролювати об'єднання, існує mergeметод PdfMerger, який дозволяє вказати точку вставки у вихідному файлі, тобто ви можете вставляти сторінки де-небудь у файлі. appendМетод можна розглядати якmerge де точка вставки є кінець файлу.
напр
merger.merge(2, pdf)
Тут ми вставляємо весь pdf у вихід, але на сторінці 2.
Діапазони сторінок
Якщо ви хочете контролювати, які сторінки додаються з певного файлу, ви можете використовувати pagesаргумент ключового слова appendта merge, передаючи кордон у формі (start, stop[, step])(як звичайна rangeфункція).
напр
merger.append(pdf, pages=(0, 3)) # first 3 pages
merger.append(pdf, pages=(0, 6, 2)) # pages 1,3, 5
Якщо ви вкажете недійсний діапазон, ви отримаєте IndexError.
Зауважте: також, щоб уникнути залишення файлів відкритими, PdfFileMergerметод s закриття слід викликати, коли записаний файл об'єднаний. Це забезпечує своєчасне закриття всіх файлів (введення та виведення). Прикро, що PdfFileMergerне реалізується як менеджер контексту, тому ми можемо використовувати withключове слово, уникати явного закриття дзвінка та отримувати легку безпеку винятків.
Ви також можете подивитися на pdfcat сценарій, що надається як частину pypdf2. Ви можете уникнути необхідності взагалі писати код.
Github PyPdf2 також містить деякий приклад коду, що демонструє злиття.