1. Об'єднання PDF за допомогою PyPDF2
Навіщо об'єднувати PDF-файли
По-перше, давайте розберемося, чому виникає необхідність об'єднувати PDF-файли. Адже, як кажуть, "Один PDF краще, ніж десять!". У робочому середовищі у вас можуть бути звіти, результати дослідження, технічна документація або презентації, які надаються окремими файлами. Постійно перемикатися між ними не лише незручно, але й ризиковано — можна щось упустити. Завдяки об'єднанню всіх файлів в один документ ви спростите роботу з цими даними та створите більш структурований підхід до їх аналізу та поширення.
Крім того, об'єднання PDF-файлів зручне для подальшого архівування, створення єдиного підсумкового звіту або зшивання кількох версій документа для відстеження змін. Загалом, можливостей — вагон і маленький візок!
Основи використання PyPDF2 для об'єднання PDF
Для початку давайте скористаємося основами роботи з PyPDF2. Ми створимо скрипт, який об'єднає кілька PDF-файлів в один. Звичайно, код буде супроводжуватися коментарями, щоб ви розуміли, що відбувається на кожному етапі.
import PyPDF2
# Створюємо об'єкт PdfMerger з бібліотеки PyPDF2
pdf_merger = PyPDF2.PdfMerger()
# Список наших PDF-документів, які ми хочемо об'єднати
pdf_files = ['document1.pdf', 'document2.pdf', 'document3.pdf']
# Цикл для додавання кожного файлу в об'єкт PdfMerger
for file in pdf_files:
pdf_merger.append(file)
# Зберігаємо результат у новий PDF-файл
output_filename = 'merged_document.pdf'
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
# Закриваємо об'єкт PdfMerger для звільнення ресурсів
pdf_merger.close()
print(f"Об'єднаний PDF створено: {output_filename}")
Порядок і структура об'єднаного документа
Тепер, коли ми навчилися об'єднувати PDF-документи, варто замислитись про порядок сторінок. Пам'ятайте, що PyPDF2 додає сторінки в тому порядку, в якому ви передали файли в метод .append(). Таким чином, порядок у списку pdf_files впливає на порядок у підсумковому документі.
2. Об'єднання окремих сторінок
Якщо ви хочете не об'єднати документи, а зібрати підсумковий документ з їх частин, то вам потрібно скористатися класом PdfWriter замість PdfMerger. Приклад:
import PyPDF2
# Список PDF-файлів, які потрібно об'єднати
pdf_files = ["file1.pdf", "file2.pdf", "file3.pdf"]
# Створення об'єкта PdfWriter для запису об'єднаного PDF
pdf_writer = PyPDF2.PdfWriter()
# Проходимо по кожному PDF-файлу
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
# Додаємо кожну сторінку в PdfWriter
for page_num in range(len(pdf_reader.pages)):
# Тут ви можете пропускати сторінки, які не хочете додавати
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Збереження об'єднаного PDF
with open("merged_document.pdf", "wb") as output_file:
pdf_writer.write(output_file)
Як працює цей код?
- Створюємо список файлів: Список
pdf_filesмістить шляхи до PDF-документів, які потрібно об'єднати. - Ініціалізуємо PdfWriter:
pdf_writerвикористовується для створення нового PDF-файлу. - Проходимо по кожному файлу: Кожен PDF-файл відкривається у режимі читання.
- Додаємо сторінки: Усі сторінки файлу по черзі додаються в об'єкт
pdf_writerза допомогоюadd_page(). - Зберігаємо результат: Після додавання усіх сторінок новий PDF-файл записується у
merged_document.pdf.
3. Стилізація нового документа
Додавання закладок та змісту
Що ж робити, якщо ваш об'єднаний документ став занадто великим і в ньому важко орієнтуватися? У такій ситуації на допомогу приходять закладки! PyPDF2 дозволяє додавати базові закладки, щоб полегшити навігацію по документу. Давайте додамо закладки для кожного документа, який ми об'єднуємо.
pdf_merger = PyPDF2.PdfMerger()
# Індекс сторінки для закладок
page_offset = 0
for file in pdf_files:
# Зчитуємо поточний документ
pdf_reader = PyPDF2.PdfReader(file)
# Додаємо документ у PdfMerger
pdf_merger.append(file)
# Додаємо закладку з ім'ям файлу
pdf_merger.add_bookmark(file, page_offset)
# Оновлюємо зміщення сторінок
page_offset += len(pdf_reader.pages)
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
pdf_merger.close()
Ця маленька хитрість допоможе вам зберегти спокій і уникнути загублених у PDF-море документів.
Оновлення метаданих об'єднаного файлу
Після об'єднання можна додати або змінити метадані документа, такі як автор, назва та ключові слова.
import PyPDF2
pdf_files = ["file1.pdf", "file2.pdf"]
pdf_writer = PyPDF2.PdfWriter()
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Додавання метаданих
pdf_writer.add_metadata({
"/Title": "Об'єднаний документ",
"/Author": "Іван Іванов",
"/Subject": "Звіт по продажах"
})
# Збереження об'єднаного файлу
with open("merged_with_metadata.pdf", "wb") as output_file:
pdf_writer.write(output_file)
Цей код додає метадані, які допоможуть ідентифікувати та структурувати документ.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ