Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

PDF Smart Split — интеллектуальная нарезка PDF с анализом контента

Утилита на Python 3 для «умной» нарезки больших PDF-файлов на части с заданным максимальным размером (МБ). Анализирует страницы (наличие изображений/шрифтов, оценка «сложности») и адаптивно подбирает количество страниц в каждом сегменте, чтобы минимизировать количество частей и избежать превышения лимита.

Основные возможности

  • Анализ страниц: изображения, встроенные шрифты, оценка сложности и примерный размер страницы.
  • Адаптивная нарезка с бинарным/адаптивным поиском оптимального диапазона страниц.
  • Защитный запас (safety margin), минимальное число страниц и адаптивный рост сегмента.
  • Вывод подробного логирования — информирует о размерах и статистике.

Требования

  • Python 3.8+ (рекомендовано 3.10+).
  • qpdf (system package) — используется для создания сегментов.
  • Python-зависимость: pypdf (скрипт попытается установить через pip при отсутствии).

Примеры установки:

# Установка qpdf (Debian/Ubuntu)
sudo apt-get update && sudo apt-get install -y qpdf

# Установка Python-зависимостей
pip install pypdf

Быстрый старт / Использование

# Запуск (по умолчанию лимит 10 МБ)
python3 pdf_smart_split.py input.pdf

# Указать лимит в мегабайтах
python3 pdf_smart_split.py input.pdf 15

Поведение и параметры

  • Скрипт анализирует документ, берёт выборку страниц и вычисляет скорректированный средний размер страницы.
  • По оценке формирует начальную границу, затем уточняет её с помощью тестов qpdf (адаптивное расширение + бинарный поиск).
  • При проблеме (например, страница больше лимита) создаёт отдельную часть и выводит предупреждение.

Советы по отладке

  • Если скрипт не находит qpdf, установите пакет системой (apt-get install qpdf).
  • Для больших/повреждённых PDF возможно увеличение safety_margin или ручная предварительная проверка проблемных страниц.
  • Скрипт печатает информацию о каждом созданном сегменте — удобно для логирования и интеграции в CI.

Собирает массив файлов и объединяет их в merged.pdf

#!/bin/bash
mapfile -t files < <(printf '%s\n' part-*.pdf | sort -V)
qpdf --empty --pages "${files[@]}" -- merged.pdf

About

Интеллектуальная нарезка PDF с анализом контента

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages