Преобразование в формат фиксированной страницы
Aspose.Words Реализует собственный движок макета страницы. Прежде чем углубляться в его спецификации, стоит сначала обсудить документ на высоком уровне. Когда вы думаете о документе, пользователи обычно представляют себе ряд бумажных листов, содержащих слова, изображения, таблицы и диаграммы. Документы могут быть разных типов, таких как текст, электронные таблицы, слайды, чертежи CAD, блок-схемы и, следовательно, могут иметь существенно разные макеты. Большинство приложений позволяют отправлять документы на принтер; это когда пользователь может фактически просматривать конечный предполагаемый внешний вид документа.
Отображение документа в различных приложениях
Различные приложения для просмотра или публикации документов позволяют пользователям открываться.Adobe Acrobat, XPS Зритель), а иногда редактирует (Adobe InDesign) документы конкретных форматов. Эти приложения обычно производят так называемые документы формата “фиксированная страница”. Такой формат документа точно описывает, где содержание документа размещается на каждой странице. Внутренне, PDF или XPS Формат содержит описание каждой страницы, а также инструкции по рисованию, уточняющие макет содержимого на странице. Это похоже на форматы изображений, описывающие, где контент отображается либо в растровой, либо в векторной форме.
Напротив, некоторые приложения для редактирования текста не поддерживают просмотр страниц документа. Например, Microsoft Блокнот поддерживает очень мало функций, кроме простого отображения, редактирования и печати текста. Важно отметить, что такие приложения не могут ни показывать страницы документа, ни сообщать пользователю, сколько из них будет напечатано. Документ может быть сохранен в простом текстовом формате и открыт многими другими приложениями. Используя приложение, позволяющее просматривать двоичное содержимое произвольного файла, можно увидеть, что хранится в файле документа - это просто текст, в нем больше ничего нет.
Немного более сложные приложения для редактирования текста, такие как Microsoft WordPad, сохраните документ в формате Rich Text Format (RTF), который поддерживает больше функций форматирования, таких как вставка изображений, форматирование символов, поля абзацев и интервалы. Однако формат RTF также содержит только содержание документа, не имея информации о страницах.
Microsoft Word является самым передовым приложением для редактирования текста в Windows Сегодня. Он форматирует файлы в формате DOCX, который гибко и широко описывает содержимое документа, позволяя пользователям указывать размер страницы, ориентацию для раздела документа и, будучи приложением WYSIWYG, даже показывать страницы документа на экране. Тем не менее, до сих пор нет информации о том, как содержимое документа отображается на страницах, доступных в файле документа. Файл документа описывает только сам контент и отношение объектов документа друг к другу, а также некоторые геометрические ограничения. В результате, перед показом документа, Microsoft Word Вычисляет саму эту информацию. Именно здесь в игру вступает макет страницы.
Что такое Page Layout
Макет страницы документа представляет собой структуру данных, описывающую, где конкретный объект расположен на страницах для всех объектов документа. Кроме того, поскольку объекты имеют свойства, которые влияют на их внешний вид, такие как размер шрифта, затенение или эффекты рисования, вам нужно не только знать, где находится объект, но и какую область страницы он занимает, и будет ли он применяться к нескольким страницам, чтобы другие объекты не перекрывали ту же область (ы).
Aspose.Words реализует функциональность компоновки страниц внутри, позволяя создавать все фиксированные форматы страниц, такие как PDF, XPS, и различные форматы изображений. Без макета страницы информация, хранящаяся в файле с фиксированным документом страницы, не будет доступна, и все эти форматы не будут поддерживаться.
Связь между документом и макетом страницы довольно проста. В то время как документ описывает содержание, соответствующий макет страницы описывает геометрию этого содержимого. Обратите внимание, что макет страницы не может существовать без документа, поскольку для вычисления геометрии не будет контента, но документ может существовать без макета страницы. Например, когда документ DOCX преобразуется в документ RTF, обычно нет необходимости знать геометрию, поскольку ни один из форматов не хранит его.
Создание Page Layout
Создание макета страницы может быть дорогостоящей процедурой, как с точки зрения скорости, так и памяти. Это обусловлено несколькими причинами:
- Документ может содержать большое количество контента, который может отображаться на тысячах страниц. Геометрия каждого объекта на каждой странице должна быть описана, потребляя ресурсы памяти.
- В документе может быть много правил, ограничивающих геометрию. Можно потратить значительное вычислительное время, обеспечивая выполнение всех ограничений
- некоторые особенности документа, например,
NUMPAGES
поля, создают рекурсивные зависимости для будущих значений свойств, которые недоступны на момент вычисления. Это приводит к повторяющимся вычислениям и суммируется во времени вычислений.
По вышеуказанным причинам, Aspose.Words Создать макет страницы можно только тогда, когда это необходимо. Типичной причиной этого будет запрос на визуализацию страниц документа или получение значения поля, которое зависит от информации, доступной в макете страницы. Менее очевидной причиной может быть экспорт документа в HTML. Несмотря на то, что HTML не является форматом фиксированной страницы и не описывает геометрию объектов контента, он по-прежнему поддерживает изображения. Такие изображения могут иметь форму форм, созданных в Microsoft Word С текстом внутри них. Например, диаграмма с ярлыками оси может быть экспортирована в HTML в качестве изображения, но прежде чем это можно будет сделать. Aspose.Words Нужно отобразить это изображение, и, следовательно, нужно знать, где отображать этикетку. Смотрите пример с диаграммой ниже:
Негеометрический Свойства
В дополнение к обработке геометрической информации, макет страницы также отвечает за расчет цветов и пограничных стилей. в Microsoft Word, Цвет текста может быть указан как автоматический, подразумевая, что выбор цвета должен основываться на затеняющем цвете ячейки или абзаца, или на цвете страницы, где появляется текст.
Макет страницы вычисляет, где появится текст и какой контент будет отображаться за ним, позволяя вычислять цвет. Существуют и другие конкретные расчеты, выполняемые макетом страницы. Например, горизонтальная граница в таблице зависит от того, является ли строка таблицы последней в столбце текста и разбита ли она по столбцам. Если строка отображается последней в столбце, используется нижняя граница вместо горизонтальной.
В Aspose.Words Пользователь может запросить создание нового макета страницы или обновление существующего. Оба они могут быть выполнены UpdatePageLayout способ, предоставляемый Document класс. Если макет страницы не существует, но он необходим (например, при экспорте документа в формат фиксированной страницы), Aspose.Words Это автоматически называется методом. Однако если макет страницы уже существует, Aspose.Words Он будет использовать существующий, чтобы избежать потребления ресурсов, необходимых для его обновления. В этом случае пользователю необходимо вызвать UpdatePageLayout
метод, чтобы убедиться, что макет страницы соответствует модели документа.
Динамическая структура
Процесс создания макета страницы состоит из следующих шагов:
- Conversion - перечисление содержания модели документа и подготовка соответствующих объектов компоновки.
- Build - организация объектов компоновки для представления содержания документа на страницах.
- Reflow Обновление расположения объектов для удовлетворения ограничений геометрии.
- Проецирование объектов макета в фиксированную презентацию страницы и завершение цветовой информации.
- Строительство и переливание содержимого формы - шаг, необходимый, если документ содержит формы с вложенным текстовым содержимым.
Отметим, что макет страницы представляет собой динамическую структуру, которую можно частично перестроить. Это особенно необходимо, когда невозможно рассчитать значения полей без перестройки структуры компоновки документа. Поле может ссылаться на местоположение объекта на странице, и в то же время само значение поля также отображается на странице, влияя на местоположение объекта ссылки. Макет страницы не может быть построен за один раз, потому что значения поля могут еще не быть доступны во время позиционирования на странице.
Рассмотрим типичный сценарий, когда NUMPAGES
Поле появляется в нижнем колонтитуле первой страницы документа. Значение этого поля - общее количество страниц. Чтобы разместить поле на странице, его значение должно быть известно. Если в настоящее время строится только первая страница, то общее количество страниц пока неизвестно. В этом случае макет страницы должен использовать значение по умолчанию, а затем вернуться в это поле и изменить его значение в соответствии с фактическими вычислениями. Однако изменение значения поля может повлиять на другое содержимое документа на странице и в конечном итоге привести к добавлению новой страницы или удалению существующей страницы, что делает вычисленное значение устаревшим. Эту проблему можно решить, сделав возможным обновление существующего макета страницы.
При создании макета также можно настроить LayoutOptions свойства, влияющие на вывод документа на страницах.
Экономия на формат фиксированной страницы
После построения макета страницы и вычисления геометрии объектов и их положения на странице документ может быть сохранен в формате фиксированной страницы, поддерживаемом Aspose.Words. При сохранении документов в форматах с фиксированной страницей могут использоваться опции рендеринга, общие для всех этих форматов. Они позволяют контролировать:
- Количество и диапазон страниц, содержащихся в выходном документе (PageCount).
- Прогресс в деле сохранения документов на каждой странице (PageSavingCallback).
- набор символов, которые используются для рендеринга чисел (NumeralFormat).
- проигрыватель метафайлов (MetafileRenderingOptions). Для более подробной информации смотрите Обработка Windows Метафилы Статья.
- Коэффициент качества для рекомпрессии изображений JPEG, значение которых может незначительно отличаться в зависимости от выбранного формата сохранения (JpegQuality).
- Оптимизация векторной графики в Aspose.Words выходнойOptimizeOutput).
- Варианты графики при сохранении в форматы Tiff, Png, Bmp, Jpeg, Emf (UseAntiAliasing, UseHighQualityRendering).
- Сохранение документа в сером масштабе (ColorMode).
- Переключение между рендерингом форм DrawingML и формами запасных частей (DmlRenderingMode).
- Переключение между режимами рендеринга эффектов DMLDmlEffectsRenderingMode).
Приведенный ниже пример показывает, как сохранить документ в формате JPEG с помощью Save
Способ и варианты рендеринга: