Antenna House Formatter

Antenna House Formatter превращает XML, XSL-FO, HTML и CSS в готовые PDF-документы и печатные полосы: пользователь задаёт структуру страниц, колонтитулы, сноски, таблицы, перекрёстные ссылки, шрифты, цветовые профили и требования PDF, а движок рассчитывает переносы, нумерацию и положение каждого элемента. Визуальное окно показывает результат постраничной вёрстки, журнал объясняет предупреждения, а диалоги параметров позволяют отдельно настроить форматирование, встраивание шрифтов, сжатие изображений, защиту, метаданные и стандартизированный вывод.

Работа строится вокруг пары исходный документ — таблица стилей. Для готового XSL-FO файл передаётся непосредственно на форматирование; для XML можно подключить XSLT, который сформирует FO, либо CSS, применяемый к элементам исходной разметки; HTML и XHTML обрабатываются с печатными правилами CSS. После расчёта страниц результат проверяют в окне предварительного просмотра, находят переполнения и разрывы, корректируют стили и повторяют форматирование без ручной правки созданного PDF.

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

Скачать Antenna House Formatter

Оценка 9.7 Рекомендуем
  • Редактирование PDF
  • Русский интерфейс
  • Просто новичкам
Скачать бесплатно на Windows
Лучшая альтернатива
Antenna House Formatter
Оценка 8.5
  • Сложная настройка стилей
  • GUI только для Windows
  • Опции требуют лицензий
Скачать Antenna House Formatter
Загрузка начнётся после нажатия

Как построен процесс форматирования

Antenna House Formatter не редактирует готовую страницу мышью по принципу текстового процессора. Макет задаётся декларативно: структура и данные находятся в XML либо HTML, а правила оформления — в XSL-FO, XSLT или CSS. Движок сопоставляет узлы разметки с правилами, рассчитывает доступную область страницы, выбирает шрифтовые глифы, выполняет перенос строк, размещает плавающие объекты и только затем создаёт визуальное представление. Поэтому исправление делается в данных или таблице стилей, после чего весь документ пересчитывается согласованно.

Для разовой проверки достаточно открыть документ и при необходимости указать таблицу стилей. Для производственного процесса полезнее заранее разделить входные данные, шаблоны и параметры вывода: один каталог содержит XML, другой — XSLT или CSS, третий — шрифты и изображения, а файл настроек фиксирует единицы измерения, обработку ошибок, шрифтовые замены и параметры PDF. Такая схема позволяет повторить выпуск на другой машине и сравнить результаты без поиска случайно изменённых флажков в диалогах.

Есть два принципиально разных маршрута. В первом XML преобразуется XSLT-таблицей в XSL-FO, после чего FO-объекты описывают страницы, потоки, блоки, строки, таблицы и сноски. Во втором XML или HTML оформляется CSS с правилами для печатных носителей. Эти модели не смешиваются внутри одной операции форматирования: нужно выбрать FO-маршрут либо CSS-маршрут. Общими остаются шрифтовый механизм, обработка графики, PDF-движок, журнал и программные интерфейсы.

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

Финальная операция зависит от назначения документа. Для экранного чтения важны закладки, ссылки, логическая структура, язык и корректное копирование текста. Для типографии на первый план выходят цветовая модель, выходной ICC-профиль, встраивание всех шрифтов, припуски и соответствие PDF/X. Для архива выбирают PDF/A и исключают несовместимые функции. Для доступности формируют тегированный PDF или PDF/UA и проверяют порядок чтения, альтернативный текст и семантику таблиц.

Главное окно и контроль страниц

Главное окно Antenna House Formatter с панелями закладок, слоёв, журнала и WYSIWYG

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

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

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

Режим показа границ визуализирует прямоугольники областей форматирования. Он полезен, когда видимый отступ создаётся не margin, а start-indent, padding или шириной региона. Дополнительный показ базовых линий помогает оценить вертикальное выравнивание текста, формул и встроенной графики. Эти вспомогательные линии не попадают в PDF и печать; они предназначены только для разбора геометрии макета.

Линейка переключается между сантиметрами, миллиметрами, дюймами, пунктами, пиками, пикселями и единицами q. Единица в интерфейсе не меняет уже заданные размеры: она влияет на отображение измерений. Для издательского шаблона удобны пункты и пики, для технических чертежей — миллиметры, для CSS-макета — пиксели. Важно не смешивать экранное представление px с физическим размером без понимания принятого движком соотношения CSS-пикселя и пункта.

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

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

Открытие документа и выбор таблицы стилей

Диалог выбора документа и таблицы стилей в Antenna House Formatter

Диалог Document/Stylesheet содержит отдельные поля для документа и таблицы стилей. Тип форматирования можно оставить в автоматическом режиме либо явно выбрать HTML, XHTML, XML с CSS или XSL-FO. Автоматическое распознавание удобно для обычных расширений и корректной разметки, но при нестандартном имени файла, неоднозначном содержимом или диагностике лучше указать тип вручную: так исключается ситуация, когда документ ушёл по другому маршруту и журнал заполнен вторичными ошибками.

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

XSLT-таблица в XML-маршруте выполняется до компоновки. Результатом может быть XSL-FO либо HTML, и от этого зависит дальнейший механизм. В сложной цепочке полезно сохранить промежуточный FO: тогда видно, сформировал ли XSLT нужные page-sequence, идентификаторы, закладки и ссылки. Если FO корректен, искать проблему нужно в свойствах форматирования; если структура отсутствует уже в промежуточном файле, менять параметры PDF бессмысленно.

Для HTML применяются связанные таблицы через link, встроенные правила style и дополнительная таблица, указанная пользователем. Приоритет определяется каскадом CSS. Печатный движок ориентируется на media print, all и собственный тип носителя; правила media screen не предназначены для результата, даже когда страницы просматриваются в окне. Поэтому расхождение с браузером не всегда означает ошибку: браузер мог показать экранный набор правил, а Formatter — печатный.

Перетаскивание файлов на область WYSIWYG ускоряет пробные операции. FO форматируется сразу; XML вместе с XSLT преобразуется и компонуется; XML или HTML вместе с CSS получает переданную таблицу; отдельную таблицу можно бросить на уже открытый документ, чтобы пересчитать его. Такой приём удобен при сравнении двух вариантов оформления, но для воспроизводимого выпуска лучше записать пути в сценарии или командной строке, а не полагаться на последовательность ручных действий.

Если документ содержит processing instruction xml-stylesheet, она участвует в выборе оформления. Для HTML может использоваться link на CSS. При отладке стоит проверить, не подключается ли одновременно старая таблица из документа и новая таблица, указанная в диалоге. Непредвиденный каскад проявляется как странные поля, размеры шрифта или цвет, хотя оба файла по отдельности выглядят правильно.

XSL-FO: управление печатной структурой

XSL-FO описывает макет через дерево форматирующих объектов. В layout-master-set определяются простые мастера страниц и последовательности мастеров; page-sequence выбирает нужную схему; flow наполняет основной регион; static-content формирует колонтитулы и другие повторяющиеся области. Такое разделение позволяет одной XSLT-таблице строить титульные листы, содержание, главы, приложения и индексы с разной геометрией, не меняя исходные данные.

Поля страницы задаются на уровне simple-page-master и регионов. Частая ошибка — одновременно назначить большие поля странице и отступы region-body, а затем добавить start-indent блокам. Движок честно складывает эти величины, поэтому колонка становится уже ожидаемой. Показ границ областей помогает увидеть, на каком уровне потеряно пространство. Для зеркальных разворотов используют разные мастера чётных и нечётных страниц, а не вычисляют отступ внутри каждого абзаца.

Условия keep-together, keep-with-next и keep-with-previous управляют неделимостью блоков. Они полезны для заголовка с первым абзацем, подписи с изображением и короткой таблицы, но чрезмерно строгие значения создают пустоты и могут привести к переполнению. Если большой блок объявлен неделимым и не помещается даже на пустой странице, движку приходится нарушать условие либо сообщать о невозможности размещения. Практичный шаблон усиливает keep только для действительно связанных элементов и допускает разрыв длинных конструкций.

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

Сноски размещаются в специальной области страницы и взаимодействуют с основным потоком. Когда на полосе одновременно находятся плавающий объект, таблица и несколько длинных сносок, ограничения могут конфликтовать. Журнал помогает определить, что именно не поместилось. Не стоит лечить проблему глобальным уменьшением шрифта: чаще достаточно ослабить keep, разрешить перенос строки таблицы или изменить стратегию размещения float.

Маркированные и нумерованные списки строятся через list-block, list-item-label и list-item-body. Ширину метки и отступ тела следует согласовать, иначе двузначные номера начнут заходить на текст. Для многоуровневой нумерации XSLT вычисляет маркер, а FO отвечает за геометрию. Если требуется выравнивание текста после маркеров разной длины, используется общий диапазон метки, а не набор пробелов в содержимом.

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

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

HTML и CSS для постраничной вёрстки

CSS-маршрут удобен, когда содержимое уже хранится в HTML или XML и команда разработки владеет веб-технологиями. Постраничный макет строится правилами @page, именованными страницами, полями, margin boxes, break-before, break-after, break-inside, widows и orphans. В отличие от браузерного экрана, здесь существует конечная полоса, поэтому каждое правило проверяется вместе с реальным размером бумаги, колонтитулами и областью под обрез.

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

Колонтитулы получают строки, счётчики, названия глав и другие генерируемые значения. Running elements и string-set позволяют вынести заголовок текущего раздела в поле страницы. При сложной иерархии надо определить, какое значение действует до первого заголовка на полосе и после него. Иначе верхний колонтитул может показывать название предыдущего раздела на странице, где новый раздел начинается ниже середины.

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

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

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

Правила media screen игнорируются в печатной компоновке, поэтому окно Formatter не обязано повторять браузер. Используйте media print или all, а для различий между PDF и экраном держите отдельные блоки правил. Если в браузере цветной фон есть, а в PDF исчез, проверяют не только свойство background, но и то, не определено ли оно исключительно внутри экранного медиазапроса.

Для XML с CSS каждый элемент должен получить подходящее значение display. Неизвестный элемент без пользовательского правила не превращается автоматически в абзац. Дефолтная таблица может показать текст, но не знает семантики предметной схемы. Поэтому базовый набор стилей явно задаёт block, inline, table, table-row и table-cell, а затем добавляет размеры, отступы и печатные свойства.

Параметры форматирования и единицы измерения

Параметры форматирования Antenna House Formatter

Диалог Format Option Setting группирует настройки шрифтового оформления, общие параметры форматирования, цвета и единицы, геометрию страницы, XSLT и CSS. Эти значения действуют поверх поведения, заданного документом, либо задают значения по умолчанию. Чтобы выпуск был воспроизводимым, настройки экспортируют в XML-файл и подключают к автоматическому сценарию. Ручное изменение одного флажка перед выпуском тиража легко забыть и трудно обнаружить при последующем сравнении PDF.

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

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

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

Настройки цвета границ и единиц интерфейса Antenna House Formatter

Вкладка Color, Border, Unit управляет служебным отображением: цветом и толщиной границ областей, единицей линейки и пересчётом пиксельной плотности. Границы бывают тонкими, средними и толстыми либо получают точную ширину в пунктах. Они нужны для диагностики и не заменяют border в документе. Если реальная рамка отсутствует в PDF, изменение служебного цвета ничего не исправит — нужно править FO или CSS.

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

Параметры страницы в диалоге полезны как значения по умолчанию, но явный мастер страницы или @page обычно задаёт итоговую геометрию. При конфликте важно понимать каскад и уровень, на котором указано значение. Размер A4 в интерфейсе не исправит FO, где simple-page-master содержит другую ширину. Для шаблона с несколькими форматами страницу определяют в разметке, а глобальный параметр оставляют резервным.

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

Журнал, поиск и анализ проблемной страницы

Журнал фиксирует предупреждения и ошибки, возникающие при разборе XML, XSLT, CSS, шрифтов, графики и компоновки. Сообщение содержит код, уровень и контекст. В автоматическом процессе код возврата и уровень ошибки должны определять, считается ли выпуск успешным. Нельзя ориентироваться только на наличие PDF: движок может создать файл, одновременно сообщив о заменённом шрифте, пропущенном изображении или переполненной области.

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

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

Промежуточное AreaTree показывает рассчитанные области после применения правил форматирования. FOTree отражает структуру форматирующих объектов, а сохранение результата XSLT позволяет увидеть FO до компоновки. Эти представления разделяют цепочку на этапы. Ошибка в XSLT проявится в FO; ошибка применения свойств — в дереве форматирования; ошибка размещения — в AreaTree; особенность PDF-движка — только в конечном файле.

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

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

Создание PDF и выбор стандарта

Диалог вывода PDF в Antenna House Formatter

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

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

Выбор уровня PDF, PDF/X, PDF/A и PDF/UA

На вкладке Version выбирается обычный PDF от 1.3 до 2.0 либо профиль PDF/X, PDF/A или PDF/UA. Выбор профиля меняет допустимые сочетания функций. Например, типографский PDF/X требует встроенных шрифтов и выходного условия, запрещает шифрование и ограничивает интерактивные элементы. PDF/A также исключает функции, мешающие долговременному воспроизведению. Поэтому профиль выбирают до настройки защиты и графики, а не пытаются применить его к уже настроенному произвольному PDF.

PDF/X предназначен для обмена печатными материалами. Для старых профилей прозрачности и RGB могут быть недопустимы, тогда как PDF/X-4 допускает современную прозрачность и управление цветом. Если проверка сообщает о несовместимости, не следует автоматически растрировать весь документ: лучше определить конкретный объект, его цветовое пространство и профиль. Растрирование ухудшает текст и увеличивает объём, тогда как корректная конверсия цвета сохраняет векторную структуру.

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

PDF/UA сосредоточен на доступности. Тегированный документ должен иметь осмысленную структуру, язык, порядок чтения и альтернативные описания нетекстовых объектов. Автоматический флажок Tagged PDF создаёт структурный каркас, но качество зависит от исходной семантики. Если таблица собрана набором позиционированных блоков, движок не сможет догадаться о заголовках строк и столбцов. Семантику задают в HTML, FO и расширениях PDF-тегов.

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

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

Шрифты, языки и переносы

Настройки встраивания шрифтов в PDF

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

Вкладка Font содержит список доступных шрифтов и список семейств, которые следует встраивать. Можно включить Embed All Fonts, отдельно разрешить базовые 14 шрифтов, считать ошибкой невозможность встраивания и выбрать полный шрифт либо подмножество. Подмножество уменьшает файл, оставляя только использованные глифы. Полное встраивание полезно, если PDF позже должен получать дополнительный текст тем же шрифтом, но увеличивает размер и зависит от лицензионных флагов самого файла шрифта.

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

Стандартные 14 PDF-шрифтов исторически могли не встраиваться, но современный надёжный процесс обычно встраивает и их, если профиль и лицензия позволяют. Иначе внешний вид зависит от шрифта-заменителя в просмотрщике. Для PDF/X и PDF/A встраивание обязательно. Если флажок включён, но проверка всё равно находит невстроенное семейство, изучают разрешения OS/2 в шрифте и сообщение движка, а не повторяют экспорт с теми же параметрами.

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

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

Сообщение о BPIL возникает, когда длинная последовательность не имеет допустимой точки разрыва и выходит за доступную ширину. Типичные причины — URL, серийный номер, код, формула или текст, помеченный как неразрывный. Исправление выбирают по смыслу: разрешают перенос в подходящих местах, применяют обработку длинных слов, сокращают представление ссылки, меняют ширину столбца либо ослабляют запрет. Уменьшение всего шрифта — крайняя мера.

Идеографические пробелы, парная пунктуация и запреты начала или конца строки влияют на набор CJK. Параметры trimming и spacing помогают получить аккуратную строку, но их следует проверять вместе с редакционными нормами конкретного языка. Латинские настройки межсловного интервала не должны автоматически переноситься на японский текст. В смешанном документе правила задаются на уровне языковых фрагментов.

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

Графика, SVG, MathML и вложенные страницы

Растровые изображения обрабатываются с учётом собственного размера, заданных width и height, DPI, цветового пространства и параметров сжатия. Если задан только один размер, второй обычно вычисляется с сохранением пропорций. Одновременное задание обоих может растянуть изображение. Для фотографий подходит JPEG, для схем с резкими границами — PNG или векторный формат. Масштабирование вверх не добавляет деталей и лишь делает дефект заметнее в печати.

SVG и MathML визуализируются нативными механизмами, поэтому линии, текст и формулы остаются чёткими при увеличении. SVG должен иметь согласованные viewBox, width и height; отсутствие размеров иногда приводит к неожиданному масштабу. Встроенные шрифты и внешние изображения внутри SVG требуют той же доступности, что и ресурсы основного документа. Если SVG виден в браузере, но пропадает в PDF, проверяют поддерживаемые элементы, ссылки и журнал.

Параметры SVG-вывода и обработки изображений

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

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

EMF и WMF обрабатываются как векторные форматы в поддерживаемом окружении. EPS может потребовать внешний интерпретатор, например Ghostscript или цепочку через Distiller. Ошибка на сервере при успешной работе на редакторской машине часто означает отсутствие внешнего компонента или неверный путь. Для автономного процесса предпочтительнее заранее конвертировать EPS в контролируемый PDF или SVG, если это допускают требования к цвету и качеству.

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

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

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

Цвет, печать и физическая страница

Печатный результат зависит от цветовых пространств исходных объектов и целевого профиля. RGB подходит для экранного PDF, CMYK и плашечные цвета — для типографского процесса. Смешанный документ допустим не во всех профилях. Выходной ICC-профиль описывает условия воспроизведения и обязателен для ряда вариантов PDF/X. Указывать случайный профиль ради прохождения проверки нельзя: он должен соответствовать реальной печатной технологии.

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

Метки принтера, обрезные поля и размер media box должны соответствовать заданию. Визуальный размер страницы в окне не показывает автоматически, где типография ожидает bleed box и trim box. Эти рамки задаются параметрами документа и PDF. Изображение, выходящее под обрез, должно действительно продолжаться за линию реза; простое добавление белого поля не создаёт припуска.

Диалог печати Antenna House Formatter

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

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

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

Сжатие, защита и метаданные PDF

Параметры сжатия цветных, серых и монохромных изображений

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

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

Pass Through позволяет переносить совместимое JPEG-изображение без декодирования и повторного сжатия. Это сохраняет качество и ускоряет выпуск. Если требуется цветовая конверсия, изменение размера или несовместимый профиль, прямой перенос может быть невозможен. Не следует считать отсутствие pass-through ошибкой само по себе; важно сравнить итоговый размер и качество.

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

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

Настройки паролей и разрешений PDF

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

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

Шифрование метаданных настраивается отдельно в совместимых режимах. Даже когда содержимое защищено, незашифрованные поля Title, Author и Keywords могут раскрывать тему документа. С другой стороны, некоторые системы индексирования требуют доступных метаданных. Решение принимают по модели угроз и каналу хранения, а не по принципу включить все флажки.

Диалог метаданных и начального режима просмотра PDF

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

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

Дополнительные параметры PDF, ссылок, профиля и аннотаций

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

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

Закладки, ссылки, формы и доступность

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

Внутренние ссылки используют уникальный id, внешние — URI. Ссылка должна иметь понятный текст и не зависеть только от цвета. При разбиении на тома внутренняя цель может оказаться в другом файле, поэтому сценарий должен преобразовать ссылку или удалить её. Проверяют также прямоугольник ссылки: он не должен перекрывать соседний текст или оставаться на пустом месте после переноса.

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

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

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

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

PDF/UA требует не только технического прохождения валидатора, но и осмысленного результата. Валидатор может подтвердить наличие тега Figure, но не оценить полезность описания. Он обнаружит пропущенный язык или неправильную вложенность таблицы, но не поймёт, что порядок разделов редакционно неверен. Поэтому автоматическую проверку дополняют ручным прохождением клавиатурой и программой чтения с экрана.

Большие документы, два прохода и память

Длинная публикация создаёт нагрузку не только количеством страниц. На память влияют объём XML-дерева, XSLT, число шрифтов, размер декодированных изображений, сложность SVG, количество закладок и необходимость хранить области для обратных ссылок. Две книги одинаковой длины могут отличаться по потреблению памяти в разы. Измерять нужно на реальных данных и с тем же профилем PDF.

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

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

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

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

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

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

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

Командная строка и программное встраивание

Командный модуль принимает документ через параметр -d, таблицу стилей через -s, тип вывода через -p и имя результата через -o. Типовая операция XML плюс XSLT в PDF выглядит как связка входного XML, XSL-файла, значения @PDF и выходного имени. Пути с пробелами заключают в кавычки. Для FO таблица стилей не нужна. В пакетном сценарии обязательно анализируют код возврата и сохраняют журнал.

AHFCmd -d "input.xml" -s "layout.xsl" -p @PDF -o "result.pdf"

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

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

На Linux и macOS командный модуль запускается после настройки путей к библиотекам и каталогу продукта. Образец run.sh показывает необходимые переменные. Если команда запускается из интерактивной оболочки, но не из systemd, cron или CI, сравнивают PATH, путь к динамическим библиотекам, текущий каталог, локаль и права. Служба наследует другое окружение и не видит пользовательские настройки автоматически.

Интерфейс .NET принимает файлы, потоки и результаты XML/XSLT без обязательного промежуточного файла. COM предназначен для Windows. Java использует JAR и нативную библиотеку, C/C++ — заголовки и общую библиотеку. Выбор зависит от стека приложения; возможности форматирования остаются общими, но управление памятью, потоками и обработкой исключений различается.

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

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

В интеграции с XML-редакторами Formatter назначают внешним FO-процессором. Редактор выполняет трансформацию сценария и передаёт FO либо вызывает команду с XML и XSLT. Для быстрого цикла графическое окно можно держать открытым и обновлять текущую страницу. Производственный выпуск всё равно запускают отдельной командой с закреплёнными файлами и без зависимости от состояния окна.

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

Практические сценарии

Техническая документация из DITA или DocBook

Для DITA и DocBook исходные темы сначала собираются и преобразуются XSLT в FO или HTML. Шаблон отвечает за титульные данные, оглавление, нумерацию разделов, предупреждения, списки, таблицы и ссылки. Formatter выполняет окончательную компоновку. При ошибке полезно сохранить агрегированный XML и промежуточный FO: проблема может возникнуть при сборке карт, в XSLT-плагине или на стадии размещения.

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

Финансовые отчёты и счета

Для отчёта данные обычно поступают в XML, а XSLT создаёт FO с таблицами, итогами и условным оформлением. Денежные значения форматируются до компоновки; движок не должен угадывать локаль числа. Ширины столбцов фиксируют по максимальным ожидаемым значениям. Итоговые строки связывают keep с ближайшими данными, но разрешают разрыв большой группы, чтобы не получить пустую страницу.

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

Книги, каталоги и многоязычные издания

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

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

Архивные и доступные документы

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

  • Определить требуемый вариант PDF/A или PDF/UA до разработки шаблона.
  • Не использовать шифрование, если оно запрещено профилем.
  • Пометить декоративные элементы как артефакты.
  • Проверить заголовки таблиц и вложенность списков.
  • Проверить копирование сложных письменностей и чтение вслух.

Ошибки и способы их устранения

СимптомВероятная причинаЧто проверить
PDF не созданФатальная ошибка разбора или параметровКод возврата, первую ошибку журнала, путь -d и право записи
Документ пустНеверный поток или CSS не задаёт displayТип форматирования, результат XSLT, правила для корневого элемента
Пропало изображениеНе найден ресурс или формат не обработанБазовый URI, регистр имени, права, Content-Type и сообщение журнала
Шрифт заменёнСемейство недоступно или нет нужного глифаКонфигурацию шрифтов, права службы, покрытие Unicode и лицензию встраивания
Строка выходит за полеНет точки разрыва или блок слишком узокBPIL, long word, white-space, ширину столбца и язык переносов
Появилась пустая страницаПереход на правую или левую полосуМастер последовательности, break-before и force-page-count
Заголовок остался одинНедостаточное keep-with-nextСвязь заголовка с первым содержательным блоком
Большой пробел перед блокомСлишком сильный keep или неделимый объектВысоту объекта, keep-together и доступную область
Сноска перекрывает текстКонфликт float, таблицы и области сносокРазмер float, разрывы таблицы и правила размещения сноски
PDF слишком большойПолные шрифты и несжатые изображенияПодмножества, downsampling, pass-through и число встроенных PDF-страниц
Мелкий текст на схеме размытJPEG или чрезмерное уменьшение разрешенияТип сжатия, DPI и исходный формат схемы
PDF/X не проходит проверкуЦвет, шрифт, профиль или запрещённое действиеOutput intent, встраивание, прозрачность, ссылки и шифрование
PDF/A не проходит проверкуНедопустимая функция или метаданныеПрофиль, XMP, ICC, шрифты, вложения и действия
Чтение идёт в неверном порядкеНеправильная структура теговПорядок элементов, роли, колонки и артефакты
Команда работает вручную, но не в службеРазное окружениеPATH, библиотеки, шрифты, локаль, текущий каталог и права
Out of memoryКрупные изображения, SVG или слишком много процессовПиковую память, лимит GUI, параллелизм и двухпроходный режим
Печать уменьшенаМасштабирование в драйвереFit to page, размер бумаги, DEVMODE и поля устройства
Ссылки ведут не тудаПовторный или отсутствующий idУникальность целей, разбиение на тома и прямоугольники ссылок

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

Когда ошибка проявляется только на одном наборе данных, сравнивают структуру проблемного элемента с успешным. Длинное значение, пустой обязательный узел, неверный язык или повторный идентификатор часто объясняют расхождение. Шаблон должен обрабатывать допустимые крайние значения, а проверка входного XML — отклонять недопустимые до форматирования.

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

Сравнение Antenna House Formatter с аналогами

ПрограммаЛучше подходит дляГлавное ограничение
Antenna House FormatterСложной автоматической публикации XML/XSL-FO и HTML/CSS, многоязычных книг, стандартов PDF и серверной интеграцииВысокий порог освоения таблиц стилей и отдельные лицензируемые опции
RenderX XEPПотоков XSL-FO, где нужны PDF, PostScript, AFP и интеграция с JavaНе предназначен для прямой CSS-вёрстки HTML как основного маршрута
Apache FOPБесплатной генерации PDF и печатных форм из XSL-FO в Java-проектахНеполная реализация XSL-FO и ограничения сложной компоновки
PrinceПрофессиональной печати HTML и CSS с JavaScript, закладками и защитой PDFНе обрабатывает XSL-FO как основной формат макета
WeasyPrintОткрытой генерации PDF из HTML/CSS в Python-приложенияхМеньше специализированных издательских и допечатных возможностей

Выбор зависит от исходной модели. Для смешанного парка XML/XSL-FO и HTML/CSS, строгих профилей PDF, многоязычного набора и нескольких API наиболее универсален Antenna House Formatter. RenderX XEP логичен в сложившейся XSL-FO-инфраструктуре, особенно при дополнительных печатных форматах. Apache FOP подходит, когда приоритетом являются открытая лицензия и базовые FO-документы. Prince удобен для продвинутой HTML/CSS-печати, а WeasyPrint — для более лёгкой интеграции с Python и веб-шаблонами. PDF Commander в эту таблицу не включён, потому что он редактирует уже созданные PDF, а не рассчитывает страницы из XML или HTML.

Практические ограничения

Графическое окно доступно только в среде Windows; на Linux и macOS работа строится через командную строку и программные интерфейсы. Это важно для команды, которая рассчитывает визуально отлаживать шаблон непосредственно на сервере. Обычно макет проверяют в Windows GUI, а затем запускают тот же проект без интерфейса в производстве, закрепив шрифты, параметры и тестовый набор.

Интерфейс не является конструктором шаблонов с перетаскиванием блоков. Он показывает результат и помогает диагностировать области, но XSLT, XSL-FO и CSS редактируются отдельно. Пользователю, не знакомому с XML и постраничной моделью, потребуется обучение. Зато после разработки один шаблон обрабатывает большие объёмы данных без ручной вёрстки каждой страницы.

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

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

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

Контрольный порядок выпуска

  1. Проверить входной XML или HTML схемой и бизнес-правилами до форматирования.
  2. Зафиксировать таблицу стилей, файл параметров, шрифты, изображения и обязательные опции.
  3. Сформировать диагностический PDF и изучить все новые предупреждения журнала.
  4. Проверить проблемные страницы в WYSIWYG с границами областей и анализом страницы.
  5. Проверить закладки, ссылки, номера страниц, содержание, формы и порядок чтения.
  6. Проверить встраивание шрифтов, копирование текста и все используемые языки.
  7. Проверить разрешение, цветовые пространства, прозрачность, ICC-профиль и припуски.
  8. Сформировать целевой PDF/X, PDF/A, PDF/UA либо обычный PDF с совместимыми параметрами.
  9. Запустить профильный валидатор и ручную проверку в независимом просмотрщике.
  10. Сравнить страницы, текст, метаданные и журнал с утверждённым эталоном.
  11. Записать контрольную сумму, число страниц, параметры выпуска и код завершения.
  12. Передать именно проверенный файл, не пересохраняя его сторонним приложением.

Такой процесс превращает Formatter из инструмента разового экспорта в контролируемый издательский конвейер. Главная ценность проявляется там, где данные регулярно меняются, а требования к макету остаются строгими: исправление в XSL-FO или CSS применяется ко всему выпуску, журнал выявляет отклонения, а выбранный профиль PDF фиксирует технические ограничения конечного файла.

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

Готовый PDF следует рассматривать как результат вычисления, а не как место для последней косметической правки. Изменение страницы в стороннем редакторе разрушает воспроизводимость: следующая сборка снова создаст исходный вариант. Правильное исправление возвращают в данные, XSLT, FO, CSS или профиль параметров, после чего повторяют весь контрольный цикл и получают документ, который можно уверенно пересобрать.