Разделение PDF на цветные и ЧБ страницы
Команда нужна, когда требуется быстро получить две версии итогового PDF: файл только с цветными страницами и файл только с черно-белыми страницами.
task pdf:split-color -- Куприянов_И221_диплом.pdf
docker compose --profile latex run --build --rm latex python3 scripts/split_pdf_color.py Куприянов_И221_диплом.pdf
Для входного файла document.pdf скрипт создаст:
| Файл | Содержимое |
|---|---|
document_color.pdf |
Только страницы, где найдено покрытие C, M или Y выше порога |
document_bw.pdf |
Остальные страницы |
Как определяется цветность
Скрипт scripts/split_pdf_color.py запускает Ghostscript с устройством inkcov:
gs -q -dSAFER -dBATCH -dNOPAUSE -o - -sDEVICE=inkcov document.pdf
Страница считается цветной, если максимальное покрытие C/M/Y больше порога. По умолчанию порог равен 0.00001, чтобы отсечь нулевые значения и мелкий численный шум.
Если нужен другой порог:
task pdf:split-color -- document.pdf --threshold 0.001
Почему используется qpdf
Ghostscript подходит для анализа цветности, но при экспорте через pdfwrite он перегенерирует страницы и может изменить поворот или геометрию. Поэтому экспорт делает qpdf: он копирует выбранные страницы из исходного PDF без перерисовки.
Суммарное количество страниц в *_color.pdf и *_bw.pdf должно совпадать с количеством страниц исходного PDF.
Зависимости
Docker-команда использует LaTeX-образ проекта, где уже установлены Ghostscript и qpdf.
Для локального запуска без Docker нужны:
| Инструмент | Проверка |
|---|---|
| Ghostscript | gs --version |
| qpdf | qpdf --version |
uv run python scripts/split_pdf_color.py document.pdf