Объединение PDF файлов Python: исключение лишних страниц
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для объединения PDF-файлов в Python можно использовать библиотеку PyPDF2. Сначала установите её с помощью команды pip install PyPDF2
. После этого создайте объект для объединения, добавьте требуемые файлы и сохраните получившийся документ:
from PyPDF2 import PdfMerger
merger = PdfMerger()
for pdf in ['file1.pdf', 'file2.pdf']:
merger.append(pdf)
merger.write("merged.pdf")
merger.close()
Вот и весь процесс в трёх шагах: Импортируйте PdfMerger
, объедините файлы в цикле с использованием append(pdf)
и сохраните результат с помощью write("merged.pdf")
. Ничего сложного.
Продвинутое объединение
Также как и в эпопее о героических походах, в мире обработки PDF-файлов у нас есть мощные инструменты типа PyPDF2
, PyMuPDF
и pdfrw
. Давайте использовать их разумно:
Выделенное управление страницами с PyPDF2
Работайте с определенными диапазонами страниц, используя аргумент pages
:
from PyPDF2 import PdfMerger
merger = PdfMerger()
merger.append('file1.pdf', pages=(0, 3)) # Берём первые три страницы из file1.pdf
merger.append('file2.pdf', pages=(2, None)) # Продолжаем с третьей страницы из file2.pdf до конца документа
merger.write('merged.pdf')
merger.close() # Мы упорядочили всё как надо
PyMuPDF: скорость и мощь объединения
Если требуется аккуратное и быстрое объединение, выберите PyMuPDF
:
import fitz # Это PyMuPDF
pdf_writer = fitz.open()
for pdf in ['file1.pdf', 'file2.pdf']:
pdf_document = fitz.open(pdf)
pdf_writer.insert_pdf(pdf_document)
pdf_document.close()
pdf_writer.save('merged.pdf')
pdf_writer.close()
Объединение файлов из папки
Если перед вами стоит задача объединить все PDF-файлы из определённой папки, воспользуйтесь функциями os.listdir()
или glob.glob()
, чтобы выполнить пакетную обработку:
import glob
from PyPDF2 import PdfMerger
pdf_files = glob.glob('*.pdf')
merger = PdfMerger()
for pdf in pdf_files:
merger.append(pdf)
merger.write('directory_merged.pdf')
merger.close()
Не забывайте про режимы доступа 'rb'
и 'wb'
для предотвращения ошибок ввода-вывода и переполнения памяти. Это обеспечит безопасность ваших данных.
Визуализация
Представьте себе, что Книга A
– это Джек, Книга B
– Роза, а PdfFileMerger
– это их Корабль:
Книга A (📗): [Жизнь Джека до "Титаника"] Книга B (📙): [Жизнь Розы на "Титанике"]
Процесс объединения 🔄
Объединение: 📗 + 📙 -> 📘 Итоговая книга (📘): [Жизнь Джека и Розы на "Титанике"]
Давайте перенесем их истории в один документ:
with open('titanic_story.pdf', 'wb') as merged:
merger = PdfMerger()
merger.append('before_titanic.pdf') # Джек
merger.append('aboard_titanic.pdf') # Роза
merger.write(merged) # Их совместная история
PdfFileMerger
– это корабль, который объединяет в себе эпические любовные истории, как история Джека и Розы на Титанике. 🚢❤️
Продвинутые методы для повышения уровня мастерства
Несколько полезных техник помогут разработчику на пути к совершенству в Python:
PDFly и его волшебные возможности
Используйте возможности командной строки с помощью команды pdfly cat
:
$ pdfly cat file1.pdf file2.pdf -o merged.pdf
Создайте свои функции для объединения
Создайте свою функцию объединения для большей гибкости и контроля над процессом:
def merge_pdfs(file_list, output_name):
merger = PdfMerger()
for pdf in file_list:
merger.append(pdf)
merger.write(output_name)
merger.close()
file_names = ['file1.pdf', 'file2.pdf']
merge_pdfs(file_names, 'hogwarts_story.pdf')
Обработка ошибок
Обеспечьте надёжность работы вашего кода, придав особое внимание обработке исключений:
try:
merge_pdfs(file_names, 'safe_hogwarts_story.pdf')
except Exception as e:
print(f"В процессе работы возникли ошибки: {e}")
Ваш код должен быть надёжен, как фортификационное сооружение, защищённое от нежелательных событий.