pdf-merge/README.md
2026-04-11 12:19:45 +03:00

77 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# pdf-merge
Скрипт для сборки PDF из страниц нескольких файлов по YAML-конфигу.
Форматы страниц (A4, A3 и др.) сохраняются без изменений.
## Требования
- [uv](https://docs.astral.sh/uv/getting-started/installation/) — менеджер Python-окружений
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
# или на Arch:
sudo pacman -S uv
```
Зависимости (`pypdf`, `pyyaml`) устанавливаются автоматически при первом запуске.
## Использование
```bash
chmod +x run.sh
# Запуск с конфигом по умолчанию (merge.yaml в текущей папке)
./run.sh
# Явно указать конфиг
./run.sh my_project.yaml
# Или напрямую через uv
uv run pdf_merge.py my_project.yaml
```
## Конфиг (merge.yaml)
```yaml
output: result.pdf # куда сохранить результат
pages:
- file: document_a4.pdf
pages: "1-5" # диапазон
- file: drawing_a3.pdf
pages: "1" # одна страница
- file: document_a4.pdf
pages: "3-15,20" # диапазон + отдельная страница
- file: appendix.pdf
pages: [1, 2, 5] # YAML-список
label: "приложение" # опциональная метка для читаемости
- file: other.pdf # pages не указан — берёт все страницы
```
### Форматы поля `pages`
| Запись | Результат |
|----------------|----------------------------------|
| `"1-5"` | страницы 1, 2, 3, 4, 5 |
| `"1,3,7"` | страницы 1, 3, 7 |
| `"1-3,7,9-11"` | страницы 1, 2, 3, 7, 9, 10, 11 |
| `[1, 3, 5]` | страницы 1, 3, 5 |
| `4` | страница 4 |
| `"all"` / пусто| все страницы файла |
Нумерация с **1** (как в PDF-ридере).
## Пример вывода
```
Конфиг: merge.yaml
+ document_a4.pdf [титул + оглавление]: страниц 2 (из 42) — индексы [1, 2]
+ drawing_a3.pdf [чертёж А3]: страниц 1 (из 3) — индексы [1]
+ document_a4.pdf [основной текст]: страниц 14 (из 42) — индексы [3, 4, ..., 20]
Готово: result.pdf (17 стр.)
```