Вы можете использовать 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
.
Примечание: также, что во избежание открытия файлов следует вызывать метод close PdfFileMerger
, когда записанный объединенный файл был записан.Это гарантирует, что все файлы будут закрыты (вход и выход) своевременно.Жаль, что PdfFileMerger
не реализован как менеджер контекста, поэтому мы можем использовать ключевое слово with
, избегать явного вызова close и получить некоторую простую исключительную безопасность.
Возможно, вы захотите посмотретьв сценарии pdfcat
, предоставленном как часть pypdf2.Вы потенциально можете избежать необходимости писать код целиком.
Python PDF github также включает некоторые примеры кода, демонстрирующие слияние.