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

2.5 KiB
Raw Blame History

pdf-merge

Скрипт для сборки PDF из страниц нескольких файлов по YAML-конфигу. Форматы страниц (A4, A3 и др.) сохраняются без изменений.

Требования

  • uv — менеджер Python-окружений
    curl -LsSf https://astral.sh/uv/install.sh | sh
    # или на Arch:
    sudo pacman -S uv
    

Зависимости (pypdf, pyyaml) устанавливаются автоматически при первом запуске.

Использование

chmod +x run.sh

# Запуск с конфигом по умолчанию (merge.yaml в текущей папке)
./run.sh

# Явно указать конфиг
./run.sh my_project.yaml

# Или напрямую через uv
uv run pdf_merge.py my_project.yaml

Конфиг (merge.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 стр.)