pdfbook2

pdfbook2 переставляет страницы обычного PDF в печатные развороты брошюры, автоматически подрезает лишние поля, добавляет запас у сгиба и внешних краёв, выбирает формат листа и формирует файл, который можно вывести с двух сторон, сложить пополам и сшить по центру. Основная работа выполняется одной командой, а параметры позволяют отдельно управлять внутренним, наружным и верхним полями, отключать обрезку, задавать размер сигнатуры и готовить листы под переворот по короткой кромке.

Рабочее окно представляет собой терминал: пользователь указывает имя исходного PDF после команды pdfbook2, наблюдает этапы определения границ, обрезки и создания брошюры, затем получает рядом файл с суффиксом -book.pdf. Программа не просит выбирать страницы мышью и не показывает макет до запуска, поэтому параметры лучше сначала проверять на короткой копии документа или на нескольких пробных листах.

В типовом сценарии достаточно перейти в папку с документом и выполнить pdfbook2 input.pdf. Исходные страницы сохраняются в порядке чтения, а в результате размещаются парами в порядке печати: крайние страницы оказываются на первом листе, следующие — на его обороте, затем последовательность движется к середине. Полученный PDF печатают в альбомной ориентации, без дополнительного масштабирования драйвером, с правильно выбранной кромкой переворота.

Скачать pdfbook2

Оценка 9.7 Рекомендуем
  • Редактирование PDF
  • Русский интерфейс
  • Просто новичкам
Скачать бесплатно на Windows
Лучшая альтернатива
pdfbook2
Оценка 8.5
  • Нет графического интерфейса
  • Нужны pdfjam и pdfcrop
  • Нет визуального предпросмотра
Скачать pdfbook2
Загрузка начнётся после нажатия

Как устроен рабочий процесс в pdfbook2

Команда получает один или несколько путей к PDF и обрабатывает каждый файл отдельно. После запуска в терминале печатаются сведения о программе, затем для каждого документа появляется строка Processing. При включённой обрезке последовательно отображаются этапы Getting bounds, cropping и create booklet. Отсутствие интерактивных диалогов удобно в сценариях, где одна и та же настройка должна применяться к десяткам документов, но одновременно требует аккуратно записывать параметры команды: после начала обработки изменить поле или формат листа уже нельзя.

Первый практический шаг — создать копию исходника с коротким и понятным именем. Команда формирует результат из имени входного файла: у manual.pdf появится manual-book.pdf. Если такой результат уже существует, он заменяется без отдельного вопроса. Поэтому оригинал можно оставить на месте, а прежнюю пробную версию результата лучше переименовать или перенести до следующего запуска. Это особенно важно при подборе полей: несколько вариантов с одинаковым входным именем иначе будут последовательно затирать друг друга.

Для первого теста полезно взять документ на 8 или 12 страниц. Такой объём позволяет увидеть реальный порядок разворотов и быстро распечатать один-два листа. После команды следует открыть новый PDF и проверить не только первую страницу, но и все печатные стороны: крайняя пара должна содержать последнюю и первую страницы, следующая сторона — вторую и предпоследнюю. У двенадцатистраничного примера получается шесть печатных сторон, то есть три физических листа при двусторонней печати.

Стандартный запуск pdfbook2 и проверка созданного файла

Командная строка и доступные параметры

Справка вызывается ключом --help или короткой формой -h. Параметры сгруппированы в три блока: общие настройки листа и обрезки, поля, а также расширенные параметры сигнатуры и разрешения определения границ. Ключи можно указывать до имени файла. Длинная запись читается лучше в сохранённых сценариях, а короткая удобна для разового запуска: например, -p a4paper -i 180 -o 50 соответствует сочетанию --paper=a4paper --inner-margin=180 --outer-margin=50.

Без имени входного файла программа показывает сведения и полную справку, после чего возвращает ненулевой код завершения. Такое поведение полезно для диагностики установки: если текст справки появился, интерпретатор смог запустить сценарий и разобрать его аргументы. Однако наличие справки ещё не подтверждает доступность внешних команд. Реальная обработка дополнительно вызывает pdfcrop, pdfjam, а для режима короткой кромки — kpsewhich и пакет everyshi.sty.

Общие параметры pdfbook2: бумага, короткая кромка и отключение обрезки

Параметр версии завершает работу сразу и не требует входного PDF. Он удобен при разборе отчёта об ошибке или при сравнении окружений на разных компьютерах. Для рабочего сценария важнее сохранить вывод --help рядом с командным файлом: перечень опций небольшой, и по нему легко проверить, не перепутаны ли внутреннее и внешнее поле, значение сигнатуры или ключ отключения обрезки.

Вывод сведений о pdfbook2 в терминале

Параметры полей, сигнатуры и разрешения в справке pdfbook2

Что происходит с PDF до спуска полос

При обычном запуске сначала определяется фактическая область содержимого каждой страницы. pdfbook2 поручает эту операцию pdfcrop с подробным выводом и получает координаты HiResBoundingBox. Затем сценарий отдельно анализирует нечётные и чётные страницы, потому что у книжного макета внутренние и наружные поля находятся с разных сторон. Для нечётных страниц вычисляются крайняя левая и правая координаты, для чётных — свой набор координат. Высота берётся по общим минимальным и максимальным границам всего документа.

Ширина содержимого нечётных и чётных страниц может различаться. Сценарий сравнивает эти значения и расширяет меньшую область до большей. Благодаря этому левая и правая половины готового разворота получают согласованные размеры, а текст не начинает заметно прыгать относительно линии сгиба. Такое выравнивание особенно полезно для отсканированных инструкций и документов, где зеркальные поля были созданы несимметрично.

После определения рамок выполняется второй вызов pdfcrop. Для нечётных страниц запас у внутреннего края добавляется слева, а наружный запас — справа. Для чётных страниц схема зеркальная: наружный запас добавляется слева, внутренний — справа. Верхняя граница расширяется на значение верхнего поля. Получается временный файл .crop-tmp.pdf, который затем передаётся pdfjam для перестановки и размещения страниц.

Этап обрезки меняет геометрию страниц, но не предназначен для исправления текста, OCR, удаления фона или выравнивания наклонного скана. Если исходник содержит чёрные рамки, отметки сканера или случайную точку далеко от основного текста, такая деталь может попасть в вычисленную область и помешать ожидаемому сжатию полей. До запуска стоит удалить мусор на краях либо подготовить чистую копию страниц в редакторе, иначе автоматическая граница будет технически правильной, но практически неудобной.

Автоматическая обрезка и параметр --no-crop

Обрезка включена по умолчанию и чаще всего даёт лучший результат для документов с большими пустыми рамками. Она освобождает место для внутреннего поля и позволяет крупнее разместить полезную область на половине печатного листа. Однако у бланков, нот, чертежей и художественных изданий пустое пространство может быть частью композиции. В таком случае команда pdfbook2 --no-crop input.pdf копирует исходный документ во временный файл без анализа содержимого и сразу переходит к спуску.

Режим без обрезки следует выбирать, когда все страницы уже имеют окончательный TrimBox или MediaBox и их положение относительно края принципиально. Он также помогает диагностировать ошибки pdfcrop: если обычный запуск прекращается на этапе Getting bounds, а вариант --no-crop завершается, причина находится именно в определении или применении границ, а не в перестановке страниц.

Отключение обрезки не отменяет масштабирование, которое pdfjam выполняет при размещении двух страниц на альбомном листе. Поэтому исходный размер страницы и выбранный формат бумаги по-прежнему влияют на итоговый масштаб. Если A4-страницы размещаются по две на A4, каждая станет примерно A5. Если исходник уже A5, две страницы обычно естественно помещаются на A4. Проверять нужно конечный размер шрифта, а не только отсутствие обрезанных строк.

Запуск pdfbook2 с отключённой автоматической обрезкой

Выбор формата бумаги

Ключ --paper принимает название формата в форме, понятной LaTeX: a4paper, letterpaper, legalpaper и другие доступные в установленной системе обозначения. Практичная команда для европейского офисного принтера выглядит так: pdfbook2 --paper=a4paper input.pdf. Для устройства, заряженного бумагой Letter, используется --paper=letterpaper.

Формат относится к физическому листу, на котором будут расположены две страницы брошюры, а не к размеру готовой страницы после сгиба. A4-лист после сгиба даёт книжный блок приблизительно A5, а A3 — приблизительно A4. Если требуется маленькая брошюра A6 из исходных A6-страниц, одного выбора A4 недостаточно: pdfbook2 строит стандартный двухполосный разворот, а не четырёх- или восьмиполосную схему с дополнительной резкой. Для таких работ нужен более гибкий инструмент спуска.

Когда --paper не указан, формат выбирает pdfjam на основании своей конфигурации и локали. Полагаться на это удобно только в полностью контролируемом окружении. В передаваемом коллеге командном файле размер лучше задавать явно, иначе один компьютер может получить A4, а другой — Letter. Разница проявится не только в размере листа, но и в масштабе страниц и ширине свободных полей.

Создание брошюры pdfbook2 с явно заданным листом A4

После обработки размер проверяют в свойствах PDF или командой pdfinfo. Для A4 в альбомной ориентации ожидается примерно 841,89 × 595,28 пункта, для Letter — 792 × 612 пунктов. Если просмотрщик показывает другой размер, сначала проверьте написание ключевого слова и убедитесь, что открыта новая версия файла с суффиксом -book.

Создание брошюры pdfbook2 на листе Letter

Настройка внутреннего и наружного поля

Параметр --inner-margin или -i задаёт дополнительный запас между двумя страницами около будущего сгиба. Значение по умолчанию заметно больше наружного поля, потому что часть пространства теряется при сгибании, прошивке или скреплении. Для тонкой брошюры запас можно уменьшить, а для толстой сигнатуры, пружины или грубого ручного сгиба — увеличить. Пример pdfbook2 -i 220 input.pdf делает центральную зону шире, чем стандартная настройка.

Параметр --outer-margin или -o расширяет край, противоположный корешку. Он влияет и на нижнюю границу в фактической реализации сценария, поэтому изменение наружного поля может одновременно дать больше пространства снизу. Для макета, который после печати будет подрезаться, наружный запас выбирают с учётом допусков принтера и резака. Для домашней печати без подрезки достаточно сохранить текст и важные элементы вне непечатаемой области устройства.

Числа полей передаются в координаты PDF, практически соответствующие пунктам с базой 72 единицы на дюйм. Поэтому изменение на 10 единиц невелико, а разница между 100 и 250 хорошо заметна. Подбирать поле удобнее серией крупных шагов: сначала 100, 180 и 260, затем уточнить подходящий вариант. Сравнение двух почти одинаковых значений часто затрудняет выбор и приводит к лишним распечаткам.

Внутреннее и наружное поле применяются до размещения страниц на печатном листе. Они не являются настройками драйвера и не зависят от опции Поля в диалоге печати. Если после создания PDF драйвер дополнительно включает Вписать в область печати, все рассчитанные запасы пропорционально уменьшатся. Для воспроизводимого результата печатайте в масштабе 100% и регулируйте геометрию именно параметрами pdfbook2.

Запуск pdfbook2 с отдельными значениями внутренних и наружных полей

Верхнее и нижнее поле

Ключ --top-margin или -t действительно расширяет верхнюю границу вычисленной области. Он полезен, если верхние колонтитулы расположены близко к краю или если после сгиба планируется обрезка. Значение -t 60 оставит сверху больше свободного пространства, чем стандартная настройка. При смешанной ориентации страниц результат нужно проверять отдельно: верх определяется в координатах каждой страницы до окончательного разворота.

Ключ --bottom-margin или -b присутствует в справке, но в исполняемом коде его значение не подставляется в нижнюю границу второго вызова pdfcrop. Там используется наружное поле. Практическая проверка двух файлов с --bottom-margin=30 и --bottom-margin=300 дала идентичный рендер. Поэтому рассчитывать на -b для отдельной настройки низа нельзя; необходимый запас приходится получать наружным полем либо предварительной подготовкой исходных страниц.

Эта особенность особенно заметна в макетах с номерами страниц у нижнего края. Если увеличение -b не меняет положение номера, это не ошибка команды пользователя. Увеличьте -o и проверьте, не стал ли одновременно слишком широким боковой край. Когда требуется независимое управление четырьмя сторонами, удобнее заранее расширить Canvas исходного PDF или выбрать инструмент, где нижний отступ реализован отдельно.

Переворот по длинной и короткой кромке

Обычный результат рассчитан на альбомный лист и двустороннюю печать с переворотом по длинной кромке в терминах документации pdfbook2. На практике обозначения в драйверах различаются: некоторые принтеры называют нужный режим по короткому краю из-за физической подачи листа. Поэтому текст в меню драйвера нельзя считать единственным ориентиром. Надёжнее распечатать один тестовый лист с крупными номерами страниц, перевернуть его и проверить ориентацию оборота.

Ключ --short-edge меняет подготовку оборотных сторон. Перед запуском сценарий ищет файл everyshi.sty через kpsewhich. Если пакет найден, pdfjam получает LaTeX-преамбулу, которая поворачивает нечётные выходные страницы на 180 градусов. Это не переключатель принтера, а изменение самого PDF, поэтому после обработки драйвер всё равно должен быть настроен без дополнительного автоматического разворота.

Если everyshi.sty отсутствует, обработка прекращается с сообщением о необходимости этого пакета. Исправление состоит не в замене исходного PDF, а в установке недостающего компонента TeX и повторной проверке kpsewhich everyshi.sty. Команда должна вывести путь к файлу. После этого можно снова запускать pdfbook2 с короткой кромкой.

Реальный запуск pdfbook2 для переворота по короткой кромке

Не следует одновременно использовать --short-edge и экспериментальные параметры поворота в драйвере, не проверив пробный лист. Два независимых поворота могут взаимно отмениться или дать перевёрнутую сторону. Сначала создайте PDF, откройте все его стороны и убедитесь, что часть листов имеет ожидаемую ориентацию. Затем печатайте один физический лист и только после проверки запускайте полный тираж.

Сигнатуры и размер тетрадей

Без параметра сигнатуры сценарий передаёт pdfjam режим --booklet true, то есть весь документ раскладывается как одна брошюра. Для небольшого буклета это естественно. У длинной книги одна толстая тетрадь неудобна: внутренние листы сильнее выступают наружу, сгиб становится грубым, а центральные страницы могут смещаться. Параметр --signature=INT делит работу на блоки указанного размера.

Размер сигнатуры должен быть кратен четырём, потому что один сложенный двусторонний лист даёт четыре страницы будущего издания. Значения 4, 8, 12, 16 и 20 технически согласуются с этим правилом. Выбор зависит от толщины бумаги и способа переплёта. Для обычной офисной бумаги часто удобно начать с 16 страниц, а для плотной бумаги — с 8. После печати тетради складывают отдельно и затем соединяют в книжный блок.

Команда pdfbook2 --signature=8 input.pdf передаёт число 8 напрямую pdfjam. Выходной PDF по-прежнему содержит печатные стороны в альбомной ориентации, но последовательность сбрасывается на границе каждой восьмистраничной тетради. При проверке нельзя ожидать, что первая страница всего файла будет соседствовать с последней страницей всей книги: она будет парой с последней страницей первой сигнатуры.

Создание восьмистраничной сигнатуры в pdfbook2

В справке также есть форма --signature*. Она записывает значение в тот же параметр, но символ звёздочки имеет специальное значение для оболочки. В Bash незаключённая звёздочка может раскрыться в имена файлов текущей папки. Поэтому безопаснее пользоваться обычным --signature. Если форма со звёздочкой нужна принципиально, аргумент следует заключить в кавычки или экранировать по правилам используемой оболочки.

Сигнатура не выполняет компенсацию сползания внутренних листов, известную как creep. Все страницы в пределах тетради получают одинаковую геометрию. Для тонких буклетов этого достаточно, но при большом числе вложенных листов крайние элементы могут сместиться относительно линии подрезки. Если тираж требует точной полиграфической компенсации, нужен инструмент спуска с отдельным параметром creep и предварительным просмотром.

Количество страниц и пустые позиции

Стандартная брошюра требует число страниц, кратное четырём. Если исходник не соответствует этому правилу, pdfjam добавляет пустые позиции, необходимые для завершения схемы. Пользователь не выбирает место вставки в pdfbook2: результат определяется механизмом booklet или signature. Поэтому перед обработкой лучше самостоятельно решить, где должны находиться пустые страницы — после обложки, перед задней обложкой или в конце текста — и добавить их в исходный PDF осознанно.

Одностраничный файл обрабатывается и превращается в один печатный лист с пустыми местами. Это полезно для теста установки, но редко является готовой брошюрой. На таком примере легко проверить, что этапы определения границ и спуска завершаются, а выходной файл открывается. Для реального буклета к одной странице обычно добавляют ещё три страницы: оборот обложки, внутреннюю страницу и заднюю обложку.

Успешная обработка одностраничного PDF в pdfbook2

При подсчёте физических листов делите число страниц после дополнения до кратности четырём на четыре. Например, 18 страниц потребуют 20 позиций и 5 листов. Выходной PDF будет содержать 10 сторон. Если просмотрщик показывает число страниц, равное половине дополненного объёма, это ожидаемо: каждая выходная страница соответствует одной стороне физического листа и содержит две страницы исходника.

Номера, напечатанные в исходном документе, после спуска не меняются. pdfbook2 не перенумеровывает страницы и не создаёт колонтитулы. Если в исходнике пропущен номер или последовательность начинается с римских цифр, программа просто переставит готовые страницы. Проверку логической нумерации нужно провести до спуска, потому что читать навигацию в печатном порядке заметно сложнее.

Обработка нескольких документов за один запуск

После параметров можно перечислить несколько PDF: pdfbook2 first.pdf second.pdf third.pdf. Сценарий проходит по аргументам по очереди и создаёт для каждого собственный файл с суффиксом -book. Документы не объединяются в одну брошюру. Если требуется общий буклет, сначала нужно собрать страницы в один исходный PDF в правильном порядке, а уже затем передать этот файл pdfbook2.

Последовательная обработка удобна, когда серия инструкций имеет одинаковый формат, поля и способ печати. Все указанные файлы получают одни и те же параметры команды. Если одному документу нужен A4 и большое внутреннее поле, а другому Letter и отключённая обрезка, их следует запускать отдельными командами. Попытка уместить разные настройки в один вызов невозможна, потому что параметры разбираются один раз до списка файлов.

Обработка двух PDF отдельными результатами за один запуск pdfbook2

Отсутствующий файл не останавливает всю последовательность: программа печатает SKIP: file not found. и переходит к следующему аргументу. Это удобно для пакетного списка, но может скрыть опечатку, если пользователь смотрит только на код завершения. После серии запусков нужно проверить наличие каждого ожидаемого -book.pdf и просмотреть журнал на строки SKIP.

Сообщение pdfbook2 при отсутствии указанного входного файла

Имена файлов, пути и перезапись результата

Алгоритм имени рассчитан на окончание .pdf: сценарий отбрасывает последние четыре символа пути и добавляет -book.pdf. Для обычного имени это работает предсказуемо. Если файл имеет необычное расширение, вообще не содержит точки или заканчивается на прописное .PDF, физическая обработка может пройти, но имя результата будет построено механически. Надёжнее заранее привести расширение к стандартному виду .pdf.

Путь с пробелами необходимо заключать в кавычки: pdfbook2 "Мои документы/booklet source.pdf". Без кавычек оболочка передаст каждую часть как отдельный файл, и в журнале появятся несколько сообщений SKIP. В сценариях автоматизации лучше использовать абсолютные пути либо сначала выполнять cd в рабочую папку. Это также упрощает поиск временного файла и результата.

Результат с совпадающим именем заменяется. Программа не создаёт резервную копию и не добавляет номер варианта. Для подбора настроек удобно сразу переименовывать результаты: mv manual-book.pdf manual-book-i180.pdf, затем запускать следующий вариант. В PowerShell аналогичную операцию выполняют средствами этой оболочки. Смысл один: каждое сочетание полей должно иметь отдельное имя до нового запуска.

Если исходный файл находится в каталоге без права записи, программа не сможет создать временный и итоговый PDF рядом с ним. Простого права на чтение исходника недостаточно. Скопируйте документ в рабочую папку, где разрешено создавать и переименовывать файлы. Сетевые каталоги также могут замедлять операции и по-разному обрабатывать скрытое имя .crop-tmp.pdf.

Временный файл и параллельные запуски

Во время обработки используется фиксированное имя .crop-tmp.pdf в текущей рабочей папке. После успешного создания брошюры временный файл удаляется. Если процесс прерван, файл может остаться. Перед повтором его можно удалить после проверки, что другой экземпляр pdfbook2 не работает в том же каталоге.

Фиксированное имя создаёт конфликт при двух одновременных запусках из одной папки. Оба процесса попытаются записывать и переименовывать один и тот же временный PDF. Результатом может стать ошибка, смешение стадий или потеря одного из файлов. Для параллельной обработки создавайте отдельную рабочую папку на каждый процесс. Последовательный вызов с несколькими аргументами безопаснее, потому что программа заканчивает один файл и удаляет временный перед переходом к следующему.

При автоматизации стоит использовать временные каталоги, имена которых включают идентификатор задания, а готовый -book.pdf переносить в общую папку только после успешной проверки. Такой подход также защищает от ситуации, когда аварийно оставшийся .crop-tmp.pdf воспринимается как результат нового запуска.

Параметр разрешения и качество результата

Ключ --resolution задаёт разрешение, с которым Ghostscript помогает pdfcrop определять границы содержимого. Стандартное значение 72 выбрано для быстрого вычисления рамок. Оно не означает, что весь документ будет растрирован до 72 dpi. Сам параметр влияет на точность и скорость поиска границы, а не служит общим регулятором качества печати.

Увеличение разрешения может помочь, если мелкая графика или тонкая линия на краю страницы не попадает в ожидаемую рамку. Однако обработка станет медленнее, особенно на длинном документе. Изменять значение нужно только после сравнения результатов, а не автоматически ставить максимальное число. Если проблема связана с мусорной точкой далеко от текста, более высокое разрешение не устранит её и может, наоборот, ещё точнее включить дефект в границу.

Качество изображений в исходнике определяется самим PDF. pdfbook2 не выполняет оптимизацию картинок, не меняет JPEG-сжатие по отдельному параметру и не повышает реальную детализацию скана. Если фотографии уже имеют низкое разрешение, спуск не восстановит детали. Проверяйте исходный масштаб до обработки и избегайте повторной печати в PDF через драйвер, который может дополнительно сжать страницы.

Печать готового файла

Перед печатью откройте результат в просмотрщике, который показывает фактический размер листа и не применяет скрытое масштабирование. В диалоге печати выберите двусторонний режим, альбомную ориентацию и масштаб 100%. Отключите функции несколько страниц на листе, брошюра и подогнать: страницы уже размещены по две и переставлены. Повторный режим брошюры в драйвере нарушит порядок и уменьшит макет второй раз.

Первый тест выполняют на одном листе, содержащем внешнюю пару. Отметьте карандашом верх и сторону подачи, распечатайте лицевую сторону, затем оборот. После сгиба первая страница должна быть обложкой, последняя — задней стороной, а вторая и предпоследняя — внутренним разворотом того же листа. Если оборот перевёрнут, измените кромку в драйвере или пересоздайте файл с --short-edge, но не меняйте оба параметра одновременно без нового теста.

Поля принтера могут быть несимметричными. Даже корректный PDF иногда печатается со сдвигом, если устройство физически подаёт оборотную сторону иначе. Для домашнего буклета это компенсируют небольшим увеличением внутренних и наружных запасов. Для точного тиража следует напечатать калибровочный лист с рамкой и измерить расхождение лицевой и оборотной стороны.

После печати сложите листы в порядке выхода, но не доверяйте стопке автоматически: некоторые принтеры выдают задания лицом вниз и меняют порядок. Сверьте номера на первой и последней тетради. При использовании сигнатур разделите листы по границам тетрадей до сгиба. Иначе две правильные сигнатуры могут быть вложены друг в друга как одна и дать неверную последовательность.

Практический сценарий: буклет из 12 страниц

  1. Подготовьте PDF из 12 страниц в порядке чтения и убедитесь, что обложка является страницей 1, а задняя обложка — страницей 12.
  2. Перейдите в папку с файлом и выполните pdfbook2 --paper=a4paper booklet.pdf.
  3. Откройте booklet-book.pdf и проверьте пары 12–1, 2–11, 10–3, 4–9, 8–5 и 6–7.
  4. Распечатайте первую и вторую стороны одного физического листа в масштабе 100%, затем сложите его для проверки кромки.
  5. Если текст у сгиба слишком близко, повторите команду с --inner-margin=200; если вокруг текста остаётся чрезмерная рамка, проверьте автоматическую обрезку и исходные артефакты.
  6. После удачного теста напечатайте все шесть сторон, сложите три листа вместе и скрепите по линии сгиба.

Этот сценарий показывает главное различие между порядком чтения и порядком печати. В выходном PDF соседние номера выглядят неправильно, пока лист не напечатан с двух сторон и не сложен. Переставлять пары вручную в просмотрщике не нужно. Любое ручное возвращение последовательности 1–2, 3–4 уничтожит смысл спуска.

Практический сценарий: длинное руководство

Для руководства на 96 страниц одна общая тетрадь потребовала бы 24 вложенных листа. Такой блок трудно ровно согнуть, а внутренние листы сильно выступят. Более управляемый вариант — сигнатуры по 16 страниц: pdfbook2 --paper=a4paper --signature=16 manual.pdf. Получится шесть тетрадей, каждая по четыре физических листа.

До печати добавьте пустые страницы так, чтобы титул, содержание и начало крупных разделов попадали на нужную сторону. pdfbook2 не знает редакционного смысла страниц и делит их только по номеру. Если первая сигнатура должна содержать отдельную обложку из другой бумаги, удобнее сделать её отдельным PDF и обработать отдельно, а текстовый блок — собственными сигнатурами.

После печати подпишите тетради карандашом на внутреннем сгибе, сложите каждую отдельно и только затем собирайте книжный блок. Проверяйте первые номера каждой сигнатуры: 1, 17, 33, 49, 65 и 81. Если граница сместилась, вероятно, исходный PDF содержал лишнюю или пропущенную страницу до спуска.

Сценарии автоматизации

Небольшой shell-сценарий может обрабатывать все PDF в папке последовательно. Важно пропускать уже созданные файлы *-book.pdf, иначе второй проход начнёт делать брошюру из брошюры. Пример логики: перебрать *.pdf, проверить, что имя не заканчивается на -book.pdf, затем вызвать pdfbook2 --paper=a4paper --inner-margin=180 "$file". Кавычки вокруг переменной обязательны для пробелов.

После каждого запуска полезно проверять существование ожидаемого результата и ненулевой размер файла. Один только код завершения не всегда отражает проблему внешнего инструмента, потому что сценарий не анализирует все сообщения pdfjam одинаково подробно. Для производственного задания дополнительно откройте PDF библиотекой, подсчитайте страницы и убедитесь, что число выходных сторон соответствует дополненному до кратности четырём входу.

Если документы обрабатываются на сервере, запускайте каждое задание в отдельной временной папке из-за фиксированного .crop-tmp.pdf. В журнал сохраняйте полную команду, стандартный вывод и стандартный поток ошибок. Эти данные позволяют отличить ошибку исходника от отсутствующего компонента TeX и от проблемы прав доступа.

Для повторяемости фиксируйте не только параметры pdfbook2, но и формат бумаги в драйвере печати. PDF может быть подготовлен правильно, а физический результат отличаться из-за опции вписать, нестандартных полей устройства или автоматического выбора ориентации. В инструкции для оператора укажите: имя выходного файла, размер листа, масштаб 100%, двусторонний режим и проверенную кромку.

Совместимость и необходимые компоненты

Для запуска нужен Python 3 и доступные в командной строке pdfjam и pdfcrop вместе с их зависимостями TeX. Команда python3 --version должна завершаться успешно, а pdfjam --version и pdfcrop --version — находиться через переменную PATH. Для режима короткой кромки дополнительно проверяется kpsewhich everyshi.sty.

В окружении TeX Live сначала проверьте, что оболочка находит pdfbook2, pdfjam и pdfcrop через PATH. Если одноимённые команды доступны из разных каталогов, они могут относиться к разным деревьям TeX и использовать несовпадающие настройки. Выполните command -v для каждого компонента и проведите одностраничный тест в той же оболочке, где будет обрабатываться основной документ.

В окружении MiKTeX успешный запуск зависит от того, видит ли процесс Python и TeX-команды. Не начинайте диагностику с большого документа: выполните pdfbook2 --help, затем обработайте одностраничный тест. Если справка работает, а реальный файл нет, проверяйте pdfcrop и pdfjam по отдельности и читайте сообщения об отсутствующих пакетах LaTeX.

На разных компьютерах версии pdfjam и TeX могут вести себя немного различно при выборе кромки, обработке аннотаций и распознавании формата бумаги. Поэтому перед передачей тиражного задания рекомендуется сохранить контрольный PDF и его параметры, а не рассчитывать, что повторный запуск в другом окружении даст бит-в-бит одинаковый файл.

Ошибки на этапе определения границ

Если pdfcrop пишет что-либо в поток ошибок во время первого прохода, pdfbook2 выводит полученные данные и завершает работу сообщением ABORT: Problem getting bounds. Причинами бывают повреждённый PDF, пароль, недоступный Ghostscript, необычная структура страницы или отсутствие самого pdfcrop. Сначала запустите pdfcrop --verbose input.pdf test.pdf напрямую и прочитайте полный вывод.

Если прямой pdfcrop тоже не работает, пересохраните исходник проверенным PDF-принтером или редактором, предварительно сохранив оригинал. Для защищённого документа снимите ограничения законным способом с известным паролем. Если ошибка возникает только на одной странице, разделите файл пополам и повторяйте тест, пока не найдёте проблемный лист.

Когда геометрия исходника уже правильная, временным обходом служит --no-crop. Но этот ключ не исправляет повреждение, которое затем мешает pdfjam. Он лишь исключает два вызова pdfcrop. Если спуск без обрезки завершился, можно печатать такой вариант или отдельно решить задачу полей другим инструментом.

Ошибки на этапе создания брошюры

После обрезки программа запускает pdfjam и ожидает файл .crop-tmp-book.pdf. Вывод pdfjam не показывается полностью, а затем сценарий пытается переименовать ожидаемый файл. Если pdfjam завершился без результата, пользователь может увидеть исключение о том, что файл не найден. В такой ситуации первичная причина находится выше: неверное имя формата, некратная четырём сигнатура, отсутствующий LaTeX-пакет или ошибка чтения временного PDF.

Для диагностики сохраните временный файл до повторного запуска, если он остался, и выполните аналогичную команду pdfjam вручную. При обычном режиме это спуск --booklet true в альбомной ориентации; при сигнатуре передаётся --signature. Ручной запуск покажет подробные сообщения LaTeX, которые pdfbook2 скрывает.

Некорректный формат бумаги проявляется именно на этом этапе. Ключ --paper не проверяется самим парсером как закрытый список: строка передаётся pdfjam. Опечатка вроде a4papre разбирается как текст, но затем не распознаётся LaTeX. Используйте стандартные имена и проверяйте размер созданного PDF.

Сигнатура 6 или 10 нарушает требование кратности четырём. Парсер принимает целое число, но дальнейший инструмент может отказать или сформировать неожиданный результат. Проверку лучше выполнять до запуска: деление размера сигнатуры на 4 должно давать целое число без остатка.

Смешанные размеры, повороты и нестандартные страницы

Документ с A4 и A5 в одном файле может быть обработан, но автоматическая рамка сводит страницы к общим предельным размерам. Маленькие страницы могут получить непропорционально большие поля, а крупные — уменьшиться сильнее. Для предсказуемой брошюры сначала нормализуйте все страницы к одному размеру и ориентации.

Страницы с поворотом 90 градусов требуют отдельной проверки. pdfbook2 создаёт альбомный печатный лист, но не предлагает интерфейс для индивидуального поворота конкретных входных страниц. Исправьте ориентацию до спуска, иначе текст одной страницы может оказаться боком относительно соседней.

CropBox, MediaBox и фактическое содержимое могут различаться. Автоматический анализ ориентируется на обнаруженную графику, а не на редакционное значение рамок. Если в PDF есть невидимый объект, отметка за пределами страницы или прозрачная маска, границы могут оказаться неожиданными. Просмотр исходника без отображения служебных объектов не всегда выявляет причину; полезен анализ структуры PDF или предварительная нормализация.

Что pdfbook2 не делает

Программа не редактирует текст, не исправляет опечатки, не меняет порядок чтения исходного документа до спуска и не предоставляет инструменты выделения страниц. Она не выполняет OCR, не уменьшает размер файла по заданному качеству, не создаёт содержание, не добавляет номера и не объединяет несколько входов в один результат. Все эти операции нужно завершить до команды спуска.

Нет визуальной сетки, линий реза, меток совмещения, вылетов и компенсации толщины бумаги. В типовой домашней брошюре они не обязательны, но для коммерческой печати могут быть критичны. pdfbook2 ориентирован на простой двухполосный буклет или тетради, а не на полный допечатный комплекс.

Программа не управляет принтером. Она создаёт PDF, но не выбирает лоток, плотность бумаги, цветовой режим и физическую кромку переворота. Эти параметры остаются в драйвере. Хороший рабочий регламент разделяет две стадии: сначала проверка геометрии выходного PDF, затем отдельная настройка устройства.

Не следует использовать pdfbook2 как средство архивного преобразования. Спущенный файл неудобен для чтения с экрана, поиска по логической последовательности и дальнейшего редактирования. Храните исходный PDF в порядке чтения, а -book.pdf считайте производной печатной копией.

Сравнение pdfbook2 с аналогами

ПрограммаЛучше подходит дляГлавное ограничение
pdfbook2Быстрого двухполосного спуска с автоматической обрезкой и полями у сгибаНет предпросмотра и сложных схем
pdfjamГибкой ручной сборки, n-up, перестановки, масштабирования и собственных схем страницКоманды сложнее и требуют понимания pdfpages
pdfimposeНескольких схем спуска, включая saddle stitch, hardcover и одностраничный зинНужно выбрать схему и освоить отдельный синтаксис
BookletImposerПользователей, которым нужен графический интерфейс для базовой брошюрыНабор профессиональных настроек ограничен
PDF::ImposeСценариев на Perl для тетрадей, сгиба, резки и книжного переплётаОриентирован на командную строку и автоматизацию

pdfbook2 выбирают, когда входной PDF уже готов, нужна одна понятная схема две страницы на стороне, а главные регулируемые параметры — бумага, поля, сигнатура и кромка. pdfjam лучше, если требуется самостоятельно задавать n-up, выбор страниц, масштаб и необычную последовательность. pdfimpose подходит для нескольких видов переплёта и нестандартных схем. BookletImposer удобнее для визуальной работы без набора команд, а PDF::Impose — для сценариев на Perl и более явной модели тетрадей.

PDF Commander не включён в таблицу, потому что редактирование, перестановка обычных страниц и подготовка содержимого не равны полиграфическому спуску. Он может быть полезен до pdfbook2 для исправления страниц или сборки исходника, но не является прямой заменой функции размещения печатных пар для сгиба.

Как выбрать параметры для конкретной задачи

ЗадачаРекомендуемый стартЧто проверить
Небольшая инструкция A5 на листе A4--paper=a4paperМасштаб 100% и кромку переворота
Текст близко к сгибу--inner-margin=200Размер шрифта после уменьшения
Макет с заранее заданными полями--no-cropСохранение композиционного пространства
Длинная книга--signature=16Границы и порядок тетрадей
Оборот выходит вверх ногами--short-edge или другой режим драйвераОдин пробный физический лист

Таблица задаёт только начальную точку. Реальное значение внутреннего поля зависит от бумаги, числа листов и способа скрепления. Формат бумаги зависит от принтера, а выбор короткой кромки — от тракта подачи. Единственный надёжный критерий — пробный лист, сложенный так же, как готовое изделие.

Ответы на практические вопросы

Почему страницы в выходном PDF идут не по порядку?

Потому что файл показывает стороны печатных листов, а не последовательность чтения. Пара 12–1 на первой стороне двенадцатистраничного буклета становится соседними обложками только после двусторонней печати и сгиба. Для проверки просматривайте пары как физические стороны, а не пытайтесь читать документ с экрана подряд.

Почему после команды стало меньше страниц?

Каждая выходная страница содержит две входные. Двенадцать входных страниц дают шесть печатных сторон. Физических листов будет три, потому что у каждого листа две стороны. Если входное число не кратно четырём, учитывайте добавленные пустые позиции.

Почему результат слишком мелкий?

Чаще всего выбран тот же формат физического листа, что и у одной исходной страницы: две A4-страницы помещаются на A4 и уменьшаются до половины. Для готового размера A4 нужен более крупный физический лист, например A3. Также проверьте, не применил ли драйвер дополнительное вписывание.

Почему изменение нижнего поля не видно?

Параметр разбирается, но его значение не используется в нижней координате фактического вызова pdfcrop. Нижний запас связан с наружным полем. Увеличивайте --outer-margin либо меняйте геометрию исходника до спуска.

Можно ли объединить несколько PDF одной командой?

Нет. Несколько аргументов обрабатываются отдельно. Сначала объедините исходники в один PDF в порядке чтения, проверьте границу между документами и только затем создавайте брошюру.

Как сохранить разные варианты полей?

После каждого запуска переименовывайте -book.pdf, например в -book-i180.pdf и -book-i220.pdf. Иначе следующий запуск заменит предыдущий вариант без вопроса.

Можно ли запустить две обработки одновременно?

Не из одной рабочей папки: оба процесса используют .crop-tmp.pdf. Создайте отдельный каталог для каждого задания или обрабатывайте файлы последовательно одним вызовом.

Что делать, если команда не найдена?

Проверьте, установлен ли пакет pdfbook2 и входит ли каталог с файлом в PATH. При ручном размещении на Unix-подобной системе добавьте исполняемый бит. Затем отдельно проверьте Python, pdfjam и pdfcrop.

Что делать, если отсутствует everyshi.sty?

Установите соответствующий пакет TeX и выполните kpsewhich everyshi.sty. Пока путь не выводится, режим --short-edge завершится до создания брошюры. Обычный режим может работать без этого конкретного файла.

Сохраняются ли интерактивные элементы PDF?

Спуск ориентирован на печать, а не на интерактивность. Формы, аннотации, ссылки, закладки и вложения нужно проверять отдельно; для печатного результата важнее видимое содержимое. Архивную исходную копию с интерактивными функциями сохраняйте отдельно.

Точная проверка геометрии и порядка листов

Проверка только миниатюр в просмотрщике недостаточна, потому что программа формирует печатные стороны, а большинство просмотрщиков показывают их как независимые альбомные страницы. Включите режим отображения одной страницы, отключите автоматический поворот и последовательно запишите пары номеров. Для документа из N страниц, дополненного до кратности четырём, первая лицевая сторона должна содержать крайние номера блока, а следующие стороны сходятся к центру. При сигнатурах проверку начинают заново на каждой границе блока.

Размер каждой половины листа оценивают не по белому полю окна, а по фактической рамке страницы PDF. Команда pdfinfo показывает MediaBox выходного листа. Половина ширины альбомного A4 соответствует области одной будущей страницы, но внутреннее поле занимает часть этой ширины. Если текст выглядит мелко, измерьте физический размер одной буквы на пробной печати; экранное увеличение просмотрщика не отражает реальный масштаб.

Для сравнения вариантов полей удобно наложить рендеры двух выходных PDF с полупрозрачностью. Совпадающий текст останется резким, а сдвиг покажет направление влияния параметра. Такой метод особенно полезен при проверке внутреннего поля и при подтверждении того, что изменение нижнего параметра не даёт эффекта. Сравнивать следует страницы с одинаковыми номерами и одинаковым разрешением рендеринга.

Автоматическая обрезка использует общие верхнюю и нижнюю границы всего документа. Одна страница с очень низким колонтитулом расширит вертикальную область для всех страниц. Если остальные листы получают лишнее пространство, найдите страницу-исключение и решите, действительно ли элемент должен сохраняться. Иногда лучше предварительно привести колонтитулы к единой позиции, чем пытаться компенсировать общий результат полями.

Нечётные и чётные страницы анализируются раздельно по горизонтали. Это помогает зеркальным полям, но предполагает правильную нумерацию исходника: первая физическая страница PDF считается нечётной независимо от напечатанного номера. Если документ начинается с ненумерованной обложки, именно она задаёт чередование. Вставка или удаление одного листа перед спуском меняет принадлежность всех последующих страниц к нечётной и чётной группе.

При проверке сигнатур создайте таблицу диапазонов: 1–16, 17–32 и далее. Для каждой тетради запишите внешнюю пару и центральный разворот. У диапазона 1–16 внешняя пара 16–1, у 17–32 — 32–17. Такой контроль быстрее визуального перелистывания длинного выходного PDF и сразу обнаруживает лишнюю страницу перед границей.

Если печать выполняется в копировальном центре, передавайте оператору уже проверенный файл и отдельную инструкцию, что повторный режим booklet не нужен. Многие производственные драйверы по умолчанию предлагают собственный спуск. Применение его к готовому макету создаст четыре уменьшенные исходные страницы на стороне или полностью изменит порядок. В инструкции также укажите физический формат листа и масштаб 100%.

Для ручной двусторонней печати без автоматического дуплекса сначала определите, какие выходные страницы относятся к лицевым сторонам, а какие к оборотным. Напечатайте нечётные стороны, переверните стопку в проверенном направлении и затем чётные. Порядок подачи зависит от конкретного принтера, поэтому универсальной схемы переворота нет. Тест из двух листов обязателен: он показывает одновременно ориентацию и порядок стопки.

При печати нескольких копий одной брошюры удобнее печатать полный комплект по экземплярам, если драйвер поддерживает разбор по копиям. Если печатать сначала все первые стороны, затем все вторые, легко смешать листы разных экземпляров. Для сигнатур дополнительно разделяйте тетради прокладочными листами или временными метками, которые удаляются после сборки.

После сгиба измерьте выступ внутренних листов. pdfbook2 не сдвигает страницы для компенсации creep, поэтому важный текст и номера не должны находиться близко к наружной линии подрезки. Увеличение наружного поля защищает содержимое, но не выравнивает сам край. Для аккуратного блока выступ подрезают после сборки либо используют специализированный спуск с компенсацией.

Цветные и полутоновые документы проверяют в том же режиме принтера, который будет использоваться для тиража. Изменение с цветного на чёрно-белый режим может изменить видимость тонких линий, которые участвовали в определении границ. Сам PDF остаётся тем же, но физический результат может потерять светлые элементы. Пробный лист должен содержать самые светлые и самые тёмные страницы.

Файл результата желательно проверить вторым просмотрщиком. Если один просмотрщик автоматически поворачивает страницы или скрывает рамки, другой может показать фактическую ориентацию. Различие отображения не всегда означает повреждение PDF; ориентируйтесь на физическую пробу и свойства страницы. Однако ошибки открытия, отсутствующие шрифты или пустые половины требуют возврата к исходнику до печати.

В каталог задания полезно сохранять текстовый файл с командой. Запись вида pdfbook2 --paper=a4paper --inner-margin=180 --signature=16 manual.pdf позволяет через месяцы повторить макет. Без неё значения приходится восстанавливать по размеру полей на глаз. Команда также объясняет оператору, почему выходной файл отличается от обычного двухстраничного разворота.

При переносе задания между системами не копируйте скрытый .crop-tmp.pdf как часть результата. Это промежуточный документ, который может быть не завершён. Нужны исходный PDF, итоговый -book.pdf, команда и пробная инструкция. Если временный файл остаётся после аварии, он помогает диагностике, но не заменяет готовый макет.

Проверка хэша итогового PDF полезна после передачи по сети. Она не подтверждает правильность спуска, но показывает, что оператор получил именно проверенный файл. Любое повторное сохранение в просмотрщике может изменить хэш и иногда геометрию. Для тиража лучше печатать исходный проверенный результат без промежуточного Экспортировать в PDF.

Командные рецепты для повторяемых задач

A4 с увеличенным корешком

pdfbook2 --paper=a4paper --inner-margin=220 input.pdf. Используется для тонкой брошюры, где текст близко подходит к сгибу. После запуска сравнивают масштаб и центральный просвет. Команду запускают в отдельной рабочей папке, затем переименовывают результат до следующего варианта и проверяют фактический размер листа.

A4 без автоматической обрезки

pdfbook2 --paper=a4paper --no-crop input.pdf. Подходит для макета с уже выверенными полями, декоративными рамками или нотными страницами. Команду запускают в отдельной рабочей папке, затем переименовывают результат до следующего варианта и проверяют фактический размер листа.

Тетради по 16 страниц

pdfbook2 --paper=a4paper --signature=16 input.pdf. Делит длинный документ на управляемые блоки. Границы тетрадей проверяют по исходной нумерации. Команду запускают в отдельной рабочей папке, затем переименовывают результат до следующего варианта и проверяют фактический размер листа.

Короткая кромка

pdfbook2 --paper=a4paper --short-edge input.pdf. Встраивает поворот нечётных выходных сторон; до тиража нужен физический тест и доступный everyshi.sty. Команду запускают в отдельной рабочей папке, затем переименовывают результат до следующего варианта и проверяют фактический размер листа.

Уточнение границы

pdfbook2 --resolution=144 input.pdf. Повышает детализацию определения области, но не увеличивает качество изображений и замедляет анализ. Команду запускают в отдельной рабочей папке, затем переименовывают результат до следующего варианта и проверяют фактический размер листа.

Подготовка исходника перед спуском

Перед запуском проверьте, что PDF действительно представляет последовательность отдельных страниц, а не уже собранные развороты. На экране журнальный разворот может выглядеть привычно, но pdfbook2 воспринимает каждую страницу файла как одну полосу будущей брошюры. Если в исходнике на одной странице уже стоят левая и правая полосы, программа разместит два таких разворота на листе и уменьшит их вдвое. Такой файл сначала разделяют на одиночные страницы, восстанавливают порядок чтения и только после этого передают команде.

Пустые страницы нужно расставить до спуска. pdfbook2 может дополнить конец блока, когда число страниц не делится на четыре, однако он не знает, где должна находиться оборотная сторона титула, рекламная вставка или пустой лист перед новой главой. Если раздел обязан начинаться справа, вставьте пустую страницу перед ним в исходном PDF и снова проверьте нумерацию. После перестановки добавлять пустой лист вручную опасно: изменится взаимное положение всех пар на последующих сторонах.

Смешанные MediaBox, CropBox и повороты желательно нормализовать. Страница может визуально выглядеть как A5, но содержать рамку A4 и флаг поворота; другая страница может иметь уже обрезанную рамку. Автоматический поиск содержимого частично сглаживает различия, однако размещение выполняется по фактической геометрии временного PDF. До запуска приведите страницы к одинаковому физическому размеру, удалите случайные повороты и откройте несколько листов в режиме показа границ страницы.

Шрифты должны быть встроены или надёжно отображаться средствами TeX и Ghostscript. pdfbook2 не редактирует текст, но внешние инструменты читают и пересобирают структуру страниц. Если исходник уже показывает заменённые символы, отсутствующие глифы или предупреждение о шрифтах, спуск не исправит дефект. Сначала создайте корректную архивную копию PDF, проверьте кириллицу, математические знаки и мелкие подписи, затем сравните те же места в файле -book.pdf.

Прозрачность, формы и аннотации оценивают по печатному виду. Команда предназначена для готового визуального содержимого и не гарантирует сохранение интерактивного поведения полей, всплывающих заметок, мультимедиа и сценариев. Перед обработкой сформируйте плоскую печатную копию, если интерактивные объекты должны стать видимыми. Оригинал с формами и закладками храните отдельно: выходной файл используется для производства бумажной брошюры, а не как замена исходному электронному документу.

Расчёт листов и контроль порядка

Количество физических листов вычисляется до запуска: число страниц дополняют до ближайшего значения, кратного четырём, и делят на четыре. Для 13 страниц потребуется 16 позиций и четыре листа, для 32 страниц — восемь листов, для 33 страниц — уже девять. Эта формула помогает обнаружить неверный результат. Если у 32-страничного документа получилось не 16 печатных сторон, проверьте, не открыта ли старая версия файла и не применил ли просмотрщик собственный режим несколько страниц на листе.

У блока из шестнадцати страниц внешняя лицевая сторона содержит пару 16–1, её оборот — 2–15, затем идут 14–3 и 4–13. Движение продолжается к центральному развороту 8–9. Для следующей сигнатуры счёт начинается с её диапазона: у страниц 17–32 внешняя пара будет 32–17, а центр — 24–25. Эта закономерность позволяет проверить длинный документ по двум крайним парам и одному центру каждой тетради, не просматривая все стороны подряд.

Печатная сторона и физический лист — разные единицы. В просмотрщике выходной PDF показывает одну сторону листа на каждой странице; две соседние страницы файла образуют лицевую и оборотную стороны одного физического листа только при правильной двусторонней печати. Поэтому шесть страниц результата означают три листа, а не шесть. При ручном дуплексе запишите номера выходных страниц, которые принтер забирает первым проходом, и не смешивайте их с исходной нумерацией брошюры.

Для документов с ненумерованной обложкой контроль ведут по позициям PDF, а не по напечатанным цифрам. Обложка считается первой страницей, даже если на ней нет номера; оборот обложки — второй. Если печатная нумерация начинается с 1 на третьей позиции, внешняя пара всё равно определяется общим количеством позиций. Ошибка возникает, когда пользователь сверяет только видимые номера и считает ненумерованные листы отсутствующими.

Ручная двусторонняя печать без дуплекса

Сначала сделайте тест на четырёх исходных страницах с крупными метками верх, низ, лицо и оборот. Обработайте его теми же ключами, что и основной документ, и напечатайте первую сторону. Отметьте карандашом ведущую кромку листа и сторону, которая была обращена вверх в лотке. Затем верните лист в подачу, напечатайте вторую сторону и сложите. Этот тест одновременно определяет переворот, порядок подачи и необходимость разворачивать стопку на 180 градусов.

Принтеры с лицевой выдачей вниз часто переворачивают порядок стопки, а модели с лицевой выдачей вверх сохраняют его, но полагаться на типовой шаблон нельзя. Драйвер может печатать страницы с конца, если включена обратная последовательность. После первого прохода сравните верхний лист стопки с ожидаемой страницей результата. Если порядок обратный, измените настройку драйвера или вручную разверните стопку; не переставляйте страницы внутри PDF.

При печати оборотов отключите автоматическую печать только нечётных или только чётных страниц исходного документа: фильтр должен относиться к страницам уже созданного -book.pdf. Для первого прохода обычно выбирают нечётные страницы выходного файла, для второго — чётные, но фактическая последовательность зависит от подачи. Сохраните рабочую схему рядом с принтером, указав, какой край входит в лоток и какая сторона лежит вверх.

Не используйте в драйвере режим брошюра, booklet, 2-up или автоматический спуск. pdfbook2 уже создал две полосы на каждой стороне и расставил их в печатном порядке. Повторная обработка драйвером уменьшит готовую сторону ещё раз, добавит лишние поля или переставит листы. Разрешены только двусторонняя печать, выбор проверенной кромки и масштаб 100 процентов.

Для нескольких экземпляров печатайте и складывайте один комплект до запуска всего тиража. После проверки включите разбор по копиям, если принтер гарантирует целостный комплект. Когда разбор недоступен, разделяйте экземпляры прокладочными листами. У сигнатур дополнительно маркируйте тетради по диапазонам страниц, иначе одинаково выглядящие сложенные блоки легко поменять местами при сборке.

Выбор сигнатуры по толщине и способу скрепления

Одна сигнатура на весь документ удобна только для тонкого блока. Восемь страниц образуют два вложенных листа, шестнадцать — четыре, тридцать две — восемь. С ростом числа листов внутренние страницы сильнее выступают наружу после сгиба, а корешок становится округлым. Для обычной офисной бумаги разумнее испытать 16 или 20 страниц на тетрадь, чем сразу собирать десятки листов в один сгиб.

Параметр --signature задаёт число исходных страниц в одной тетради, а не число физических листов. Значение обязано делиться на четыре: 16 означает четыре листа, 24 — шесть, 32 — восемь. Выбирайте размер так, чтобы границы не разрывали таблицу, вклейку или главу, если редакционная структура важна. При необходимости добавьте пустую страницу перед границей или подготовьте части отдельными PDF.

Для скобы по центру тетради должны быть достаточно тонкими, чтобы скоба прошла через весь сгиб без разрыва бумаги. Для ниточного шитья несколько сигнатур собираются последовательно, и одинаковый размер блоков упрощает прокол. pdfbook2 не добавляет метки прокола и не нумерует тетради, поэтому диапазон каждой сигнатуры отмечают в рабочей инструкции или временно подписывают на внутреннем поле после печати.

Компенсация выдвижения внутренних листов не выполняется. У толстой сигнатуры наружный край текста на внутренних страницах окажется ближе к линии подрезки, хотя геометрия PDF одинакова. Оставляйте безопасное наружное поле и делайте физический макет из той же бумаги. Если требуется точная компенсация creep с постепенным сдвигом полос, используйте специализированный инструмент спуска после подготовки страниц.

Диагностика компонентов по отдельности

Если команда не запускается, начните с command -v pdfbook2 и pdfbook2 --help. Первый вызов показывает, какой файл будет выполнен, второй проверяет чтение сценария Python. Затем отдельно выполните command -v pdfjam и command -v pdfcrop. Наличие файлов в установленном пакете недостаточно: каталог должен входить в PATH именно того пользователя и той оболочки, где выполняется обработка.

Ошибку на стадии границ изолируют прямой командой pdfcrop --verbose input.pdf crop-test.pdf. Если она не создаёт результат, проверьте сообщения Ghostscript, защиту паролем, повреждённые таблицы ссылок и необычные объекты за пределами страницы. Если прямой вызов успешен, но pdfbook2 прекращается, сохраните полный терминальный вывод и убедитесь, что имя файла не совпадает с промежуточным именем.

Стадию спуска проверяют командой pdfjam на временной или заранее подготовленной копии PDF. Подробный вывод LaTeX обычно точнее указывает отсутствующий пакет, неверное имя формата бумаги или проблему с правами записи. Не пытайтесь исправить такое сообщение увеличением полей: геометрические ключи не устанавливают компоненты TeX и не восстанавливают повреждённый документ.

Для --short-edge выполните kpsewhich everyshi.sty. Пустой вывод означает, что TeX не видит требуемый файл. После установки пакета повторите команду в той же среде, где будет работать pdfbook2. Если несколько установок TeX сосуществуют, kpsewhich и pdfjam могут относиться к разным деревьям; пути из command -v помогают обнаружить такую смесь.

Права записи проверяют в текущей папке, потому что результат и .crop-tmp.pdf создаются рядом с исходником. Попробуйте создать и удалить обычный тестовый файл. Каталог только для чтения, сетевой ресурс с ограничениями или занятый прежним процессом временный файл могут сорвать обработку. Для диагностики скопируйте исходник в новый локальный каталог с простым именем и повторите ту же команду.

Безопасная пакетная обработка

Пакетный сценарий должен исключать файлы, имена которых уже заканчиваются на -book.pdf. Иначе повторный проход обработает готовые печатные стороны как исходные страницы и создаст -book-book.pdf с неверным масштабом и порядком. Дополнительно исключайте временные и тестовые копии по отдельной папке, а входной список формируйте до запуска, чтобы новые результаты не попадали в текущий цикл.

Каждое задание выполняйте в собственной рабочей папке. Фиксированное имя .crop-tmp.pdf делает параллельные процессы в одном каталоге небезопасными: один процесс может перезаписать промежуточный файл другого. Надёжная схема создаёт временный каталог, копирует или связывает туда один исходник, запускает команду, проверяет результат и только затем перемещает готовый PDF в каталог выдачи.

После команды проверяйте не только наличие файла, но и его размер, число страниц и физический формат. Для входа из N страниц ожидаемое число страниц результата равно половине числа позиций, дополненного до кратности четырём; при сигнатурах сумма остаётся той же. Нулевой файл, неожиданное число сторон или портретный MediaBox считаются ошибкой, даже если оболочка не показала явного сообщения.

Журнал задания должен содержать имя исходника, его контрольную сумму, полную команду, время запуска, стандартный вывод и контрольную сумму результата. Это позволяет воспроизвести макет и отличить изменение исходного PDF от изменения параметров. Не включайте в журнал содержимое защищённых документов; достаточно технических идентификаторов и сообщений программы.

Переименовывайте успешный результат атомарно после проверки, например из временного имени в окончательное. Сам pdfbook2 заменяет существующий -book.pdf, поэтому хранить варианты рядом под одним именем нельзя. Добавляйте к имени ключевые параметры: формат листа, внутреннее поле и размер сигнатуры. Тогда оператор видит различие между пробами и не отправляет на печать случайный вариант.

Граничные случаи входного PDF

Одностраничный файл всё равно можно обработать: для полноценного листа понадобятся пустые позиции. Полученный результат полезен для проверки окружения, но не всегда имеет практический смысл как брошюра. У файлов на две или три страницы заранее решите, где должна быть пустая сторона. Автоматическое дополнение в конец не заменяет редакционную расстановку пустых оборотов.

Документ с пятью страницами будет дополнен до восьми позиций, то есть потребует два физических листа. Если пятая страница должна оказаться задней обложкой, простого дополнения в конец недостаточно: между основным текстом и обложкой придётся вставить нужное число пустых страниц. Проверяйте внешнюю пару по фактическим позициям после такой вставки.

PDF с альбомной страницей внутри портретного документа не получает индивидуального интеллектуального поворота. Такая страница может уменьшиться сильнее или оказаться ориентированной боком относительно остальных. Перед спуском поверните её в желаемое положение и приведите рамку к общему размеру. После обработки откройте сторону, где она размещена, и проверьте обе половины листа.

Сканированные страницы с разным наклоном, фоном и чёрными краями требуют предварительной очистки. pdfcrop ищет область содержимого, но не выполняет deskew и не различает полезный текст от полосы сканера. Один тёмный край может расширить рамку всего набора нечётных или чётных страниц. Нормализация сканов до единого размера обычно даёт более стабильный масштаб, чем попытка компенсировать дефект большими полями.

Файл с паролем или ограничением печати нужно подготовить законным способом до запуска. Внешние компоненты могут отказать на чтении, создать пустые страницы или завершиться с сообщением Ghostscript. Не передавайте пароль в имени файла и не сохраняйте его в командном журнале. Создайте разрешённую печатную копию, откройте её обычным просмотрщиком и только затем выполняйте спуск.

Проверка готового PDF перед передачей

Откройте результат в режиме одной страницы и отключите автоматическое расположение разворотом. Каждая страница результата должна быть одной альбомной стороной физического листа с двумя полосами. Если просмотрщик сам объединяет две стороны рядом, легко принять четыре полосы на экране за одну печатную сторону. Сверьте размер страницы в свойствах и убедитесь, что он соответствует выбранной бумаге.

Проверьте первую сторону, её оборот, центральный разворот и последнюю сторону каждой сигнатуры. На внешней стороне должны сходиться крайние номера диапазона, в центре — соседние номера. Затем просмотрите страницы с самыми широкими таблицами, низкими колонтитулами, иллюстрациями у края и светлыми линиями. Эти места чаще выявляют чрезмерную обрезку и недостаточное поле.

Распечатайте один лист при масштабе 100 процентов и измерьте готовую половину линейкой. Настройка вписать может скрыть ошибку формата: изображение будет целиком, но станет меньше, а поля — шире. Если размер отличается, исправляйте формат PDF или параметр драйвера, а не компенсируйте отклонение случайным увеличением процентов печати.

Сложите тестовый лист точно по центральной линии и посмотрите, совпадает ли верх обеих половин, читается ли текст у корешка и правильно ли ориентирован оборот. Проверка на плоском листе не показывает потери внутреннего поля. Для сигнатуры распечатайте все её листы на той же бумаге, вложите друг в друга и оцените выступ внутренних краёв до выбора окончательной подрезки.

Перед передачей сохраните исходник, проверенный результат и текст команды как три отдельных файла. Получателю передайте инструкцию: формат бумаги, двусторонний режим, кромка, масштаб 100 процентов и запрет повторного спуска в драйвере. Контрольная сумма результата помогает убедиться, что в печать ушёл именно проверенный макет, а не ранняя проба с другим полем.

Контрольный список перед тиражом

  • Исходный PDF открывается без пароля и содержит страницы в порядке чтения.
  • Число страниц осознанно дополнено до кратности четырём, а пустые страницы стоят в нужных местах.
  • Все страницы имеют одинаковую ориентацию и ожидаемый физический размер.
  • Формат листа явно указан через --paper, если окружение может различаться.
  • Автоматическая обрезка не удаляет композиционные поля и не захватывает случайный мусор.
  • Внутреннее поле проверено на реальном сгибе, наружное — на непечатаемой области принтера.
  • Для длинного документа выбрана сигнатура, кратная четырём.
  • Выходной PDF имеет ожидаемое число сторон и правильные крайние пары страниц.
  • В драйвере отключены повторный режим брошюры, n-up и автоматическое масштабирование.
  • Один пробный лист распечатан с двух сторон, сложен и проверен до полного тиража.

После этих проверок pdfbook2 выполняет свою задачу предсказуемо: исходник остаётся удобным для чтения и хранения, а отдельный файл -book.pdf служит печатным макетом. Главные риски связаны не с перестановкой страниц, а с неверным форматом физического листа, двойным масштабированием, неподходящей кромкой переворота и неучтёнными полями. Контроль короткого теста устраняет их быстрее, чем повторная печать всего документа. После контрольной сборки можно переходить к печати полного тиража.