Ви можете використовувати клас 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 також містить деякий приклад коду, що демонструє злиття.