Объединение PDF файлов Python: исключение лишних страниц

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для объединения PDF-файлов в Python можно использовать библиотеку PyPDF2. Сначала установите её с помощью команды pip install PyPDF2. После этого создайте объект для объединения, добавьте требуемые файлы и сохраните получившийся документ:

Python
Скопировать код
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"). Ничего сложного.

Кинга Идем в IT: пошаговый план для смены профессии

Продвинутое объединение

Также как и в эпопее о героических походах, в мире обработки PDF-файлов у нас есть мощные инструменты типа PyPDF2, PyMuPDF и pdfrw. Давайте использовать их разумно:

Выделенное управление страницами с PyPDF2

Работайте с определенными диапазонами страниц, используя аргумент pages:

Python
Скопировать код
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:

Python
Скопировать код
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(), чтобы выполнить пакетную обработку:

Python
Скопировать код
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 (📙): [Жизнь Розы на "Титанике"]

Процесс объединения 🔄

Объединение: 📗 + 📙 -> 📘 Итоговая книга (📘): [Жизнь Джека и Розы на "Титанике"]

Давайте перенесем их истории в один документ:

Python
Скопировать код
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:

shell
Скопировать код
$ pdfly cat file1.pdf file2.pdf -o merged.pdf

Создайте свои функции для объединения

Создайте свою функцию объединения для большей гибкости и контроля над процессом:

Python
Скопировать код
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')

Обработка ошибок

Обеспечьте надёжность работы вашего кода, придав особое внимание обработке исключений:

Python
Скопировать код
try:
    merge_pdfs(file_names, 'safe_hogwarts_story.pdf')
except Exception as e:
    print(f"В процессе работы возникли ошибки: {e}")

Ваш код должен быть надёжен, как фортификационное сооружение, защищённое от нежелательных событий.

Полезные материалы

  1. GitHub – py-pdf/pypdf: PyPDF на GitHub
  2. Real Python – Руководство по использованию PDF в Python
  3. GitHub – pymupdf/PyMuPDF: PyMuPDF на GitHub
  4. GitHub – pikepdf/pikepdf: PikePDF на GitHub
  5. PDFMiner GitHub: PDFMiner на GitHub
  6. Mouse Vs Python – Обзор средств работы с PDF в Python