Как объединить PDF/JPEG файлы по партиям на основе имени файла/порядкового номера

Вопрос или проблема

Добрый день всем,

Я ищу решение для пакетного объединения тысяч PDF/JPEG файлов в наборы на основе имени файла и номера страницы. В приведенном ниже примере цель заключается в том, чтобы в итоге получить два файла с именами 0001.pdf и 0002.pdf, а их соответствующие страницы были включены в порядке.

Пример папки:
0001.jpg, 0001_Page_1.jpg, 0001_Page_2.jpg, 0001_Page_3.jpg, 0002.jpg, 0002_Page_1.jpg, 0002_Page_2.jpg, 0002_Page_3.jpg, 0002_Page_4.jpg и т.д.

Я искал довольно долго, но не могу найти решение, которое соответствовало бы моим потребностям. Любая помощь была бы очень полезна!

Ответ или решение

Чтобы объединить PDF и JPEG файлы в пакетном режиме на основе имени файла и номера страницы, мы можем использовать Python и некоторые популярные библиотеки, такие как PyPDF2 для работы с PDF файлами и Pillow для работы с изображениями. Ниже представлено детальное руководство по решению вашей задачи, в том числе с примерами кода.

Шаг 1: Установите необходимые библиотеки

Для того чтобы начать работу, убедитесь, что у вас установлен Python. Затем установите необходимые библиотеки, выполнив в командной строке:

pip install PyPDF2 Pillow

Шаг 2: Подготовьте структуру файлов

Перед началом объединения файлов убедитесь, что ваши файлы имеют правильную нумерацию, как в вашем примере:

0001.jpg
0001_Page_1.jpg
0001_Page_2.jpg
0001_Page_3.jpg
0002.jpg
0002_Page_1.jpg
0002_Page_2.jpg
0002_Page_3.jpg
0002_Page_4.jpg

Шаг 3: Код для объединения файлов

Ниже представлен примеры кода на Python, который выполняет задачу объединения файлов в зависимости от их названия.

import os
from PyPDF2 import PdfWriter
from PIL import Image

# Папка с вашими файлами
input_folder = "path_to_your_folder"
output_folder = "path_to_output_folder"

# Функция для объединения JPEG в PDF
def images_to_pdf(image_files, output_pdf):
    images = [Image.open(img_file).convert('RGB') for img_file in image_files]
    images[0].save(output_pdf, save_all=True, append_images=images[1:])

# Извлекаем список файлов
files = os.listdir(input_folder)
files.sort()  # Сортируем файлы для правильного порядка

# Словарь для хранения файлов по группам
file_groups = {}

# Группируем файлы по именам
for file in files:
    if file.endswith('.jpg'):
        base_name = file.split('_')[0]  # Извлекаем базовое имя
        if base_name not in file_groups:
            file_groups[base_name] = []
        file_groups[base_name].append(os.path.join(input_folder, file))

# Обработка каждой группы
for base_name, image_files in file_groups.items():
    # Определяем путь для выходного PDF файла
    output_pdf_file = os.path.join(output_folder, f"{base_name}.pdf")

    # Объединяем изображения в один PDF файл
    images_to_pdf(image_files, output_pdf_file)

print("Объединение файлов завершено!")

Шаг 4: Запустите код

Поместите код в файл с расширением .py, укажите правильные пути для input_folder и output_folder, затем запустите файл через консоль.

Заключение

Данный скрипт поможет вам эффективно группировать и объединять PDF и JPEG файлы в зависимости от их названия. Имея только несколько строк кода, вы сможете обработать тысячи файлов за короткий промежуток времени.

Если у вас возникнут вопросы или потребуется уточнение каких-либо шагов, пожалуйста, дайте знать — я с удовольствием помогу!

Оцените материал
Добавить комментарий

Капча загружается...