Вопрос или проблема
Добрый день всем,
Я ищу решение для пакетного объединения тысяч 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 файлы в зависимости от их названия. Имея только несколько строк кода, вы сможете обработать тысячи файлов за короткий промежуток времени.
Если у вас возникнут вопросы или потребуется уточнение каких-либо шагов, пожалуйста, дайте знать — я с удовольствием помогу!