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