bpdf — это консольный инструмент (CLI) на языке Rust для комплексной обработки PDF-файлов, изображений, текстовых документов и файлов Microsoft Office (Word, Excel, PowerPoint). Утилита ориентирована на высокую скорость, минимальный размер, надежность операций (атомарная запись) и гибкую автоматизацию (поддержка NDJSON, списков файлов и переменных окружения).
- Объединение (Merge): Склеивание PDF, обычных изображений, комиксов (CBZ), JPEG 2000/JPEG-LS/JPEG XR, HEIC/AVIF/PSD, RAW-снимков камер, электронных книг (EPUB, FB2, FB2.ZIP, HTMLZ), документов Word/Excel/PowerPoint/OpenDocument и текстовых файлов в единый PDF или текстовый файл.
- Многостраничные изображения и комиксы: Все страницы TIFF, архивы CBZ (с естественной сортировкой страниц) и все кадры GIF/APNG/анимированного WebP становятся отдельными страницами PDF при
merge. - Распознавание текста (OCR) и создание Searchable PDF: Извлечение текста со сканов, картинок и PDF в Markdown или создание PDF с невидимым текстовым слоем (
-o searchable.pdf) через облачный Groq Vision (Qwen / Llama) или нативный локальный Windows Media OCR (без API-ключей и интернета). - Оглавление и закладки (Bookmarks): Автоматическое построение дерева закладок PDF Outlines при объединении файлов (
merge --bookmarks). - Умное кеширование OCR: Content-addressed кеш на диске (SHA-256 хэш изображения + модель/движок + промпт). Повторные вызовы и параллельные потоки выполняются мгновенно без обращения к сети.
- Поддержка сетевых прокси: Работа через HTTP и SOCKS5 прокси для обхода блокировок или корпоративных ограничений.
- Печати и штампы: Наложение прозрачных PNG-изображений с точной позиционировкой (
br,center, координаты в мм), настройкой масштаба, прозрачности и выбором слоя (over,under,auto). - Форматирование и приведение страниц: Приведение к стандартам A4/Letter, центрирование содержимого, единая ориентация по большинству страниц и сохранение исходных размеров страниц PDF (
none/original/keep). - Очистка метаданных (Strip): Удаление EXIF-метаданных из JPEG/PNG без перекодирования пикселей, очистка метаданных PDF Info / XMP и конвертация внешних FFmpeg-форматов и RAW-снимков в чистое JPEG.
- Редактирование PDF: Разбиение на страницы (
split), извлечение диапазонов (extract), поворот (rotate), изменение размера (resize), оптимизация структуры и изображений по DPI (optimize). - Безопасное изменение in-place: Возможность перезаписи исходных файлов при явном указании флага
-oдля модификаторов PDF и--forceдляconvert. - Метаданные PDF Info: Просмотр (
metadata show) и редактирование (metadata set) полей Title, Author, Subject, Keywords, Creator. - Диагностика (
doctor): Проверка конфигурации, доступности внешних утилит (ffmpeg,powershell, MS Office) и проверка API Groq без расхода лимитов OCR. - Автоматизация и Total Commander: Полная оптимизация для работы с Total Commander (готовая панель кнопок
bpdf.bar, встроенные иконки под каждое действие, поддержка списков файлов@"%UL"и%P%N). Поддержка тихих пакетных скриптов (--quiet), потокового вывода NDJSON (--json), шаблонов (globs*.jpg), естественной сортировки (scan_1.jpg,scan_2.jpg,scan_10.jpg) и файловых манифестов (@list.txt).
- ОС: Windows 10 / 11 (x64) или Linux / macOS.
- Внешние форматы изображений: Для HEIC/HEIF, AVIF, PSD, JPEG 2000/JPEG-LS, DDS, EXR, HDR, QOI, TGA, PCX, PNM, SGI, XBM, DPX, FITS и других редких растров требуется установленный
ffmpegв системномPATHлибо параметр--ffmpeg C:\path\to\ffmpeg.exe. Фактический набор декодеров зависит от сборки FFmpeg. - Системные форматы Windows: JPEG XR/HD Photo (
.jxr,.wdp,.hdp) и ICO декодируются через встроенные кодеки Windows Imaging Component. - RAW-снимки камер: По умолчанию снимки
.cr2,.cr3,.nef,.arw,.dng,.raf,.orf,.rw2и другие мгновенно обрабатываются в Pure Rust путём извлечения полноразмерного встроенного превью от процессора камеры (кроссплатформенно: Windows, Linux, macOS). Полная проявка сенсора через Windows Imaging Component включается опциейraw_develop = trueвconfig.toml(требует Microsoft Raw Image Extension:winget install --id 9NCTDW2W1BH8 -s msstore). - Конвертация Office/OpenDocument: Для точного рендеринга DOC/DOCX/RTF/ODT, XLS/XLSX/ODS и PPT/PPTX/PPS/PPSX/ODP в Windows используется MS Office через COM-автоматизацию. Если MS Office не установлен или запуск на Linux/macOS, автоматически срабатывает встроенный Pure-Rust fallback, который извлекает форматированный текст и заглавия из XML-структур документов без сторонних зависимостей.
- Groq Vision OCR: Groq API Key требуется только для распознавания изображений; извлечение готового текстового слоя PDF работает без ключа. Ключ задаётся в
config.toml, в том числе через%GROQ_API_KEY%.
cargo build --release
cargo test --all-targetsСборка чистая и не требует сторонних C/C++ компиляторов.
Для создания оптимизированного EXE со встроенными ресурсами Windows (иконка, манифест длинных путей, версии):
.\build.batСкрипт выполнит:
- Подготовку и проверку многослойной иконки (16x16 – 256x256 px; готовые ресурсы переиспользуются).
- Считывание версии из
Cargo.toml. - Компиляцию манифеста, версии и иконки через
rc.exe(Windows SDK). - Оптимизированную сборку
cargo build --release --locked. - Упаковку бинарного файла, файла конфигурации и документации в директорию
dist.
Глобальные ключи могут передаваться перед любой подкомандой:
--config <PATH>— Путь к файлу конфигурации (по умолчанию ищетсяconfig.tomlв текущем каталоге или рядом сbpdf.exe).--quiet— Тихий режим. Подавляет вывод прогресса и информационных сообщений (конфликтует с--json).--json— Потоковый режим вывода NDJSON (выводит события и результаты в формате JSON, по одному объекту на строку).--fail-fast— Остановить пакетную команду после первой ошибки. Без этого флага остальные файлы обрабатываются, выводится итоговая сводка, а при наличии ошибок процесс завершается с ненулевым кодом.-h, --help— Вывести справочную информацию.-V, --version— Вывести версию программы.
Объединяет PDF-файлы, изображения, документы Office и текстовые файлы в один документ.
bpdf merge <INPUTS>... [OPTIONS]Параметры:
<INPUTS>...— Список входных файлов, папок, масок (*.jpg), диапазонов (doc.pdf:1-5) или файлов-списков (@list.txt). (Обязательный).-o, --out <PATH>— Путь к выходному файлу. Если не указан, имя генерируется автоматически (например,document_merged.pdf).-s, --size <SIZE>— Размер страницы PDF. Значения:A4,Letter, либоnone/original/keep, чтобы не менять размеры страниц входных PDF.--auto-rotate[=true|false]— Поворачивать страницы к ориентации большинства страниц документа. При равенстве используется ориентация первой страницы; без ключа действует значениеauto_rotateиз конфигурации.--no-rotate— Не поворачивать страницы и сохранять книжную или альбомную ориентацию каждой страницы даже при приведении к A4/Letter. Переопределяетauto_rotateиз конфигурации и не может использоваться одновременно с--auto-rotate.--stamp <PATH>— Путь к PNG-изображению для наложения штампа/печати.--stamp-pos <POS>— Позиция штампа:br(bottom-right),bl,tr,tl,c(center),tc,bc,l,rили смещениеX,Yв миллиметрах от правого нижнего угла (для отрицательных значений используйте--stamp-pos="-X,Y").--stamp-dpi <DPI>— Физическое разрешение штампа в DPI (автоматически считывается из PNG-файла, если сохранено сканером/Photoshop; по умолчанию96.0).--stamp-scale <SCALE>— Множитель масштаба штампа (по умолчанию1.0при известном/указанном DPI;0.0— автоподбор до 25% страницы).--stamp-op <OPACITY>— Прозрачность штампа от0.0(прозрачный) до1.0(непрозрачный).--stamp-pages <PAGES>— Страницы для штампа (all,first,last,1-5,even,odd).--stamp-mode <MODE>— Режим наложения штампа:auto(под текст, если есть шрифты),over(поверх содержимого),under(под содержимым).--stamp-blend <MODE>— Режим наложения цвета (normal,multiply,screen,overlayи др.;multiplyдля реалистичных чернил).--keep-icc[=true|false]— Сохранять цветовые профили ICC у изображений (по умолчаниюfalseдля уменьшения размера).--optimize[=true|false]— Оптимизировать структуру PDF и уменьшать слишком большие встроенные изображения доimage_dpiиз конфигурации; JPEG кодируется сjpeg_quality.--strip-meta[=true|false]— Удалять метаданные из итогового документа.--bookmarks[=true|false]— Создавать оглавление/закладки (PDF Outlines) для каждого объединяемого файла.--author <STRING>— Указать имя автора в свойствах PDF.--creator <STRING>— Указать программу-создателя в свойствах PDF.--ffmpeg <PATH>— Путь к FFmpeg для внешних форматов изображений и резервного декодирования.
Распознает текст с документов и изображений с помощью облачного Groq Vision OCR или встроенного локального Windows Media OCR. При сохранении в .pdf автоматически создаёт Searchable (Sandwich) PDF с невидимым текстовым слоем поверх сканов.
bpdf ocr <INPUTS>... [OPTIONS]Параметры:
<INPUTS>...— Входные файлы (JPG, PNG, PDF, RAW и др., включая диапазоны страниц для PDF:doc.pdf:1-5), папки или маски. (Обязательный).-o, --out <PATH>— Путь к итоговому файлу:- Если расширение
.pdf(например-o searchable.pdf) — создаётся Searchable PDF с текстовым слоем. - Если расширение
.mdили путь не указан — создаются Markdown-файлы с распознанным текстом.
- Если расширение
--in-place— Встроить распознанный текстовый слой (Searchable PDF) прямо в исходный PDF-файл на месте (перезаписывает файл, конфликтует с-o/--out, применимо только к PDF).--engine <ENGINE>— Движок распознавания:groq,windows(илиwinocr),auto.--lang <LANG>— Языковой тег для Windows OCR (например,ru,en-US).--proxy <URL>— Прокси-сервер (http://...илиsocks5://...).--model <NAME>— Модель Groq Vision (по умолчаниюqwen/qwen3.6-27b).--prompt <TEXT>— Кастомный текстовый промпт для модели.--endpoint <URL>— URL конечной точки Groq API.--force-ocr— Принудительно выполнять OCR через нейросеть, даже если у PDF есть извлекаемый текстовый слой.--jobs <NUM>— Количество параллельных потоков OCR (от 1 до 64, по умолчанию2).--no-cache— Отключить дисковый кеш OCR.--cache-dir <PATH>— Путь к каталогу кеша OCR.--ffmpeg <PATH>— Путь к FFmpeg для внешних форматов изображений и резервного декодирования.
Разбивает многостраничный PDF на отдельные одностраничные PDF-файлы.
bpdf split <INPUT> [OUTPUT_DIR]Параметры:
<INPUT>— Исходный PDF-файл.[OUTPUT_DIR]— Директория для сохранения страниц. По умолчанию — папка исходного файла.
Извлекает указанные страницы из PDF в новый PDF-файл.
bpdf extract <INPUT> <PAGES> [OUTPUT]Параметры:
<INPUT>— Исходный PDF-файл.<PAGES>— Диапазон страниц (например:1-5,8,first,last,even,odd).[OUTPUT]— Имя нового файла (по умолчаниюdoc_extracted.pdf). Не может совпадать с исходным файлом.
Показывает диагностическую информацию о PDF (версия, количество страниц, шрифты, изображения).
bpdf inspect <INPUT> [--text]Параметры:
<INPUT>— Исходный PDF-файл.--text— Дополнительно извлечь и выдать текстовый слой.
Удаляет метаданные из JPEG, PNG и PDF (in-place по умолчанию). Неподдерживаемые форматы автоматически пропускаются без ошибки.
bpdf strip <INPUTS>... [OPTIONS]Параметры:
<INPUTS>...— Файлы или папки для очистки (JPEG, PNG, PDF; остальные пропускаются).-o, --out <PATH>— Выходной файл или папка (допустимо только при одном входном файле). Если-oне указан, очистка выполняется in-place.--keep-icc[=true|false]— Сохранять цветовой профиль ICC.--ffmpeg <PATH>— Путь к FFmpeg для резервного декодирования.
Поворачивает страницы PDF или изображения JPEG на угол, кратный 90 градусам, либо приводит их к указанной ориентации (portrait или landscape). Неподдерживаемые форматы в папках пропускаются.
bpdf rotate <INPUTS>... <DEGREES> [-p <PAGES>] [-o <OUT>]
bpdf rotate <INPUTS>... --orient <landscape|portrait> [-p <PAGES>] [-o <OUT>]Параметры:
<INPUTS>...— Исходные PDF-файлы или картинки JPEG.<DEGREES>— Угол поворота по часовой стрелке в градусах (90,180,270,-90и т.д., обязателен, если не указан--orient).--orient <MODE>— Целевая ориентация (portraitилиlandscape, конфликтует с<DEGREES>).-p, --pages <PAGES>— Страницы для поворота (по умолчаниюall, применимо только к PDF).-o, --out <PATH>— Выходной файл или папка (перезапись на месте по умолчанию, если не указано).
Масштабирует и центрирует страницы PDF на листе формата A4 или Letter, либо изменяет размер изображений JPEG по --long-edge / --short-edge / формату листа. Неподдерживаемые форматы в папках пропускаются.
bpdf resize <INPUTS>... [-s <SIZE>] [--long-edge <PX>] [--short-edge <PX>] [-o <OUT>]Параметры:
<INPUTS>...— Исходные PDF-файлы или картинки JPEG.-s, --size <SIZE>— Целевой формат страницы PDF (A4илиLetter, по умолчаниюA4).--long-edge <PX>— Изменить размер картинки так, чтобы длинная сторона была не больше указанного значения в пикселях.--short-edge <PX>— Изменить размер картинки так, чтобы короткая сторона была не меньше указанного значения в пикселях.-p, --pages <PAGES>— Выбранные страницы PDF (по умолчаниюall).-o, --out <PATH>— Выходной файл или папка (перезапись на месте по умолчанию).
Быстро извлекает текстовый слой из PDF без использования сторонних сервисов и сети.
bpdf text <INPUT> [-o <OUT>]Параметры:
<INPUT>— Исходный PDF-файл.-o, --out <PATH>— Сохранить результат в файл вместо вывода в стандартный поток (stdout).
Накладывает прозрачный PNG-штамп на существующий PDF-документ.
bpdf stamp <INPUT> <STAMP> [OPTIONS]Параметры:
<INPUT>— Исходный PDF-файл.<STAMP>— Путь к PNG-файлу штампа.-o, --out <PATH>— Выходной PDF (укажите-o input.pdfдля перезаписи на месте).--position <POS>— Позиционирование:br,bl,tr,tl,c,tc,bc,l,rили смещениеX,Yв мм от правого нижнего угла (для отрицательных значений используйте--position="-X,Y").--dpi <DPI>— Физическое разрешение штампа в DPI (автоматически считывается из PNG-файла, если сохранено сканером/Photoshop; по умолчанию96.0).--scale <SCALE>— Множитель масштаба (по умолчанию1.0при известном/указанном DPI;0.0— автоподбор до 25% страницы).--opacity <OPACITY>— Прозрачность от 0.0 до 1.0 (по умолчанию1.0).--pages <PAGES>— Диапазон страниц (по умолчаниюall).--mode <MODE>— Режим слоев (auto,over,under).--blend <MODE>— Режим наложения цвета (normal,multiply,screen,overlayи др.;multiplyидеален для реалистичных печатей поверх документов).
Примеры:
# Наложение печати на последнюю страницу в левый нижний угол с реалистичным смешиванием чернил
bpdf stamp "Доверенность.pdf" "stamp.png" --position="-130,30" --mode over --blend multiply --pages last -o "Доверенность_с_печатью.pdf"
# Наложение штампа на все страницы поверх документов из 1C/Word (не перекрывая черный текст)
bpdf stamp invoice.pdf stamp.png --position br --blend multiply -o invoice.pdfВыполняет структурную оптимизацию PDF (удаление мусорных объектов, сжатие потоков) и уменьшает встроенные растровые изображения до разрешения image_dpi из конфигурации относительно размера страницы. Для merge и optimize используется один расчёт размера. JPEG перекодируется с качеством jpeg_quality; значение image_dpi: 0 отключает уменьшение картинок, но оставляет структурную оптимизацию.
bpdf optimize <INPUT> [-o <OUT>]Параметры:
<INPUT>— Исходный PDF-файл.-o, --out <PATH>— Выходной файл (укажите-o input.pdfдля изменения на месте).
Управление метаданными PDF Info (Title, Author, Subject, Keywords, Creator).
bpdf metadata show <INPUT>bpdf metadata set <INPUT> [OPTIONS]-o, --out <PATH>— Выходной файл (укажите-o input.pdfдля изменения на месте).--title <STRING>— Название документа.--author <STRING>— Автор.--subject <STRING>— Тема.--keywords <STRING>— Ключевые слова.--creator <STRING>— Программа-создатель.
Конвертирует изображения (включая многостраничные TIFF, JPEG 2000/JPEG-LS/JPEG XR/ICO и редкие FFmpeg-форматы) в JPEG. Многостраничные TIFF-документы автоматически распаковываются на отдельные JPEG-файлы для каждой страницы. Для анимаций (GIF, WebP) берется только первый кадр.
При передаче PDF-файлов команда по умолчанию извлекает оригинальные встроенные растровые изображения (идеально для сканов). Если PDF содержит текстовый слой (текстовые документы), программа автоматически переключается на нативный Windows-рендер и преобразует каждую страницу в JPEG-изображение.
bpdf convert <INPUTS>... [OPTIONS]Параметры:
<INPUTS>...— Исходные изображения или PDF-файлы (включая диапазоны страниц для PDF:doc.pdf:1-5).-o, --out <PATH>— Директория назначения для сохранённых JPEG-файлов.--render— Для PDF: принудительно рендерить страницы в JPEG вместо извлечения встроенных картинок (полезно для принудительного рендера сканов).--long-edge <PX>— Максимальный размер длинной стороны изображения.--short-edge <PX>— Минимальный размер короткой стороны изображения.--orient <MODE>— Принудительная ориентация (landscapeилиportrait).-q, --quality <0-100>— Качество JPEG (переопределяет глобальный конфиг).--keep-icc[=true|false]— Сохранять цветовые профили ICC.--ffmpeg <PATH>— Путь к FFmpeg для внешних форматов изображений и резервного декодирования.--force— Разрешить замену уже существующих выходных файлов, включая конвертацию на месте. Коллизии, при которых два входных файла дают один выходной путь, запрещены даже с--force.
Проверяет окружение, валидность конфигурации, доступность утилит, декодеров RAW (Pure Rust / WIC) и ключей API.
bpdf doctorПроверка API Groq выполняется безопасным запросом списка моделей без отправки изображений и списания OCR-лимитов. Ключи API и учетные данные в выводе маскируются.
- Встроенный Rust-декодер используется для JPEG, PNG, BMP, GIF, TIFF, WebP и APNG. Для BMP/GIF/TIFF/WebP/APNG при ошибке встроенного декодера автоматически пробуется FFmpeg.
- Через FFmpeg обрабатываются HEIC/HEIF, AVIF, PSD, JPEG 2000 (
.jp2,.j2k,.j2c,.jpc,.jpf,.jpx), JPEG-LS (.jls), DDS, EXR, HDR, QOI, TGA, PCX, PNM (.pnm,.ppm,.pgm,.pbm,.pam), SGI, XBM, DPX, FITS (.fits,.fit,.fts), PGX, Sun Raster, XWD и PIX. Берётся первый видеопоток и первый кадр. - Через встроенные кодеки Windows Imaging Component обрабатываются JPEG XR/HD Photo (
.jxr,.wdp,.hdp) и ICO. Для ICO выбирается изображение с наибольшим разрешением. - Снимки фотокамер
.3fr,.arw,.bay,.cr2,.cr3,.crw,.dcr,.dng,.erf,.fff,.gpr,.iiq,.k25,.kdc,.mef,.mos,.mrw,.nef,.nrw,.orf,.pef,.raf,.raw,.rw2,.rwl,.sr2,.srf,.srwи.x3fпо умолчанию декодируются в Pure Rust без внешних утилит и кодеков через извлечение полноразмерного аппаратного JPEG-превью камеры. При необходимости полной проявки сенсора на Windows через WIC используется опцияraw_develop = trueвconfig.toml. - При
mergeвсе логические страницы TIFF и все кадры GIF/APNG/анимированного WebP добавляются в PDF по порядку. Ограничение безопасности — не более 10 000 кадров из одного файла.convert,ocrиstripработают с одним основным кадром. - JPEG XL не заявлен как поддерживаемый: декодер JXL отсутствует во многих сборках FFmpeg.
- Электронные книги:
.epub,.fb2,.fb2.zip(распаковка архивов, автоизвлечение структуры глав, заголовков и метаданных Title/Author при конвертации в PDF). - Word:
.doc,.docx,.rtf,.odt. - Excel:
.xls,.xlsx,.ods. - PowerPoint:
.ppt,.pptx,.pps,.ppsx,.odp. - Текст:
.md,.txt,.json,.jsonc,.xml,.yaml,.yml,.log,.ini,.cfg,.csv,.tsv, а также любые другие текстовые файлы и файлы исходного кода (.rs,.py,.c,.cpp,.js,.sql,LICENSE,.envи т.д.), автоопределяемые по содержимому (эвристика валидации UTF-8 / ASCII). - Если все входы текстовые, по умолчанию они объединяются как текст. Явный выход
-o result.pdfвключает рендеринг текста в PDF.
В командах extract, rotate, resize, stamp, а также непосредственно во входных путях для merge поддерживается следующий синтаксис:
all— все страницы;first— первая страница;last(илиl) — последняя страница;even— четные страницы (2, 4, 6...);odd— нечетные страницы (1, 3, 5...);1-5,8,last— комбинация одиночных страниц и диапазонов.
При объединении документов можно выбирать конкретные страницы отдельного PDF прямо в командной строке:
bpdf merge scan.jpg report.pdf:1-3,last notes.txt -o result.pdfВы можете передавать текстовые файлы со списком входов, предваряя путь символом @:
bpdf merge @files.txt -o output.pdfФормат файла files.txt:
# Комментарии игнорируются
C:\docs\cover.jpg
C:\docs\report.pdf:1-10
C:\docs\appendix.pdf:even
Утилита автоматически расширяет маски файлов (*.png, scans/*.pdf) и сортирует файлы по естественному алфавитно-цифровому порядку (Natural Sort: page1.jpg, page2.jpg, page10.jpg). При передаче каталога обрабатываются только файлы непосредственно в нём; вложенные каталоги автоматически не обходятся.
Утилита bpdf полностью адаптирована для удобной работы в Total Commander:
- Готовая панель кнопок (
bpdf.bar): Файл панели входит в поставку/дистрибутив и содержит предустановленные кнопки для всех ключевых операций (объединение, OCR, разделение, извлечение страниц, штампы, очистка метаданных). - Списки выделенных файлов: Полная совместимость с параметром списка файлов Total Commander
@"%UL"(передача списка выделенных файлов в UTF-8 без ограничений на длину командной строки) и одиночными файлами%P%N. - Встроенные иконки: Исполняемый файл
bpdf.exeсодержит отдельные многослойные иконки для каждого действия на панели кнопок.
Во избежание случайной потери данных утилита придерживается следующих правил:
- PDF-модификаторы (
rotate,resize,optimize,stamp,metadata set): Чтобы перезаписать исходный файл на месте, требуется явно передать его путь через флаг-o(например:bpdf rotate doc.pdf 90 -o doc.pdf). Без-oсоздается новый файл с суффиксом (например,doc_rotated.pdf). - Очистка метаданных (
strip): По умолчанию работает in-place (на месте), если не передан флаг-o. - Конвертация (
convert): Любая замена существующего файла, включая исходник (например,bpdf convert photo.jpg), требует--force. Если несколько входов дают одинаковый выходной путь, команда завершится ошибкой, чтобы не потерять ранее созданный результат. - Команда
extract: Категорически запрещает перезапись исходного PDF.
Параметры по умолчанию можно настроить в файле config.toml.
Файл ищется в следующей последовательности:
- Путь из флага
--config <PATH>; config.tomlв текущем рабочем каталоге;config.tomlв папке с исполняемым файломbpdf.exe.
# API Ключ Groq для OCR
groq_api_key = "%GROQ_API_KEY%"
# Прокси-сервер (HTTP или SOCKS5)
proxy = ""
# proxy = "socks5://127.0.0.1:10808"
# Метаданные по умолчанию
author = "My Company"
creator = "bpdf toolkit"
# Параметры обработки PDF
auto_rotate = false
keep_icc = false
optimize = false
strip_metadata = false
bookmarks = false
page_size = "A4"
jpeg_quality = 95 # качество JPEG при merge и optimize
image_dpi = 150 # целевой DPI при merge и optimize; 0 отключает уменьшение
raw_develop = false # false = быстрое Pure-Rust превью, true = полная проявка WIC
# Настройки OCR
ocr_engine = "groq" # "groq" (облачный Vision), "windows" (локальный WinOCR) или "auto"
ocr_model = "qwen/qwen3.6-27b"
# ocr_prompt = '''Extract all text exactly as it appears...'''
ocr_endpoint = "https://api.groq.com/openai/v1/chat/completions"
ocr_jobs = 1
ocr_cache = true
# ocr_cache_dir = 'D:\cache\bpdf-ocr'
ocr_timeout_seconds = 120
ocr_max_tokens = 4096
# Пути к сторонним утилитам
# FFmpeg нужен для HEIC/HEIF, AVIF, PSD, JPEG 2000 и других внешних форматов
ffmpeg = 'ffmpeg'
powershell = 'powershell.exe'
# font_path = '%WINDIR%\Fonts\arial.ttf'
office_timeout_seconds = 120Полный образец с комментариями и всеми необязательными полями находится в config.example.toml.
В файле конфигурации поддерживаются подстановки переменных окружения в формате %ИМЯ_ПЕРЕМЕННОЙ% (например, %GROQ_API_KEY% или %WINDIR%), а также стандартные комментарии #. Для путей в Windows рекомендуется использовать одинарные кавычки '...' во избежание экранирования обратных слэшей.
# Объединение изображений, отсканированного PDF и заметок в единый PDF
bpdf merge scan.jpg invoice.pdf:1-3 notes.txt -o result.pdf
# Объединение всех картинок из папки с приведением к A4 и автоповоротом
bpdf merge *.jpg -s A4 --auto-rotate --optimize -o scans.pdf
# Объединение с сохранением исходной ориентации каждой страницы
bpdf merge *.pdf -s A4 --no-rotate -o mixed.pdf
# Наложение печати на документ в правый нижний угол с прозрачностью 60%
bpdf merge invoice.pdf --stamp seal.png --stamp-pos br --stamp-op 0.6 -o stamped.pdf
# Наложение печати с точным позиционированием (отступ 150 мм влево от правого нижнего угла)
bpdf merge invoice.pdf --stamp seal.png --stamp-pos="-150,0" -o stamped.pdf
# Распознавание текста со скана через Groq Vision в Markdown
bpdf ocr scan.jpg -o scan.md
# Параллельное распознавание файлов с использованием прокси и кастомной модели
bpdf ocr *.jpg --jobs 4 --proxy socks5://127.0.0.1:10808 --model qwen/qwen3.6-27b
# Конвертация AVIF и PSD в JPEG через FFmpeg
bpdf convert photo.avif design.psd --out converted
# Конвертация JPEG 2000, JPEG-LS, JPEG XR и ICO в JPEG
bpdf convert scan.jp2 medical.jls photo.jxr icon.ico --out converted
# Конвертация RAW-снимков фотоаппаратов в JPEG (быстрое превью без кодеков)
bpdf convert photo.cr3 photo.nef photo.arw --out converted
# Все страницы TIFF и кадры анимации становятся страницами PDF
bpdf merge multipage.tiff animation.apng animation.webp -o pages.pdf
# PowerPoint и OpenDocument в PDF
bpdf merge slides.pptx report.odt table.ods -o office.pdf
# Конвертация электронных книг (EPUB, FB2, FB2.ZIP) в PDF
bpdf merge book.epub -o book.pdf
bpdf merge story.fb2.zip -o story.pdf
# JSON/XML/YAML как текстовый PDF
bpdf merge data.json settings.xml config.yaml -o data.pdf
# Наложение печати поверх документа с реалистичным смешиванием чернил (multiply)
bpdf stamp document.pdf stamp.png --position="-130,30" --mode over --blend multiply
# Очистка EXIF метаданных у всех фото в папке на месте (in-place)
bpdf strip photos/*.jpg
# Разбиение PDF на отдельные страницы
bpdf split document.pdf output_pages/
# Извлечение первых 5 страниц и последней страницы
bpdf extract document.pdf 1-5,last selected.pdf
# Поворот всех четных страниц PDF на 90 градусов на месте
bpdf rotate document.pdf 90 --pages even -o document.pdf
# Приведение страниц PDF к формату Letter
bpdf resize document.pdf --size Letter -o document_letter.pdf
# Извлечение встроенного текстового слоя в файл
bpdf text document.pdf -o text_layer.txt
# Установка свойств документа PDF
bpdf metadata set document.pdf --title "Отчет 2026" --author "Иван Иванов" -o document.pdf
# Извлечение картинки/конвертация изображений в JPEG
bpdf convert photo.png document.pdf -o converted_jpegs/
# Проверка работоспособности системы и интеграций
bpdf doctor
# Интеграция со скриптами в режиме NDJSON
bpdf --json merge *.jpg -o result.pdf