WordArt, клип-арт и календари: сложные места в файлах Publisher

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

На эти детали мы потратили большую часть прошлого года. Разберём самых злостных нарушителей.

WordArt

Арочный заголовок над листовкой о благотворительной распродаже выпечки. Текст, изогнутый в полный круг вокруг логотипа. WordArt в Publisher выходит далеко за рамки «жирного и цветного»: каждый пресет деформирует буквы по своей геометрии, и ошибка хорошо видна. Большинство конвертеров сдаётся и рендерит текст плоско — и постер снова превращается в служебную записку.

Наш рендерер воспроизводит формы, включая круговые и кольцевые пресеты, где каждый глиф должен шагать по дуге по одному. Это потребовало неприлично много проб и ошибок, чтобы сделать правильно. Оно того стоило. Удивительно большая доля реальных .pub-файлов начинается с WordArt — потому что, конечно, именно так и есть; это была кнопка «весело».

Клип-арт и старые форматы изображений

Тот клип-арт, который кто-то выбрал из галереи в 2004 году, — не PNG. Как правило, это WMF или EMF — форматы векторной графики Windows из 90-х, которые хранят инструкции («нарисуй линию здесь, залей эту фигуру»), а не пиксели. Современные программы делают вид, что этих форматов не существует, — вот почему в конвертированных бюллетенях так часто появляются загадочные пустые прямоугольники там, где раньше был рисунок.

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

Таблицы — особенно календари

Мастер создания календарей в Publisher строил таблицу. Шаблон прайс-листа тоже. И блок «часы работы». Таблицы кажутся простыми, но это не так: у каждой ячейки могут быть свои рамки, заливки и выравнивание, в некоторых ячейках тёмный фон со светлым текстом, а в некоторых таблицах текст идёт вертикально. Убери одну рамку — и календарь перестаёт выглядеть как календарь.

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

Градиенты, текстуры и эффекты изображений

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

Зачем вообще со всем этим возиться

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

Publisher по-прежнему остаётся единственной программой, которая рендерит эти файлы идеально, — и уходит. Наша цель — быть достойным вторым, и мы тестируем себя на десятках тысяч реальных документов. Когда что-то всё же выходит не так, этот файл становится отчётом об ошибке — и, как правило, исправлением.

Попробуйте что-нибудь со сложным форматированием и посмотрите. Предпросмотр бесплатен.