Оформление форм Отдельно от документа
При обработке документов общей задачей является извлечение всех изображений, найденных в документе, и экспорт их во внешнее место. Эта задача становится простой с Aspose.Words API, который уже обеспечивает функциональность для извлечения и сохранения данных изображения. Тем не менее, иногда вы можете аналогично извлечь другие типы графического контента, которые представлены другим типом объекта рисования, например, текстовый ящик, содержащий абзацы, формы стрелок и небольшое изображение. Не существует простого способа отображения этого объекта, поскольку он представляет собой комбинацию отдельных элементов контента. Вы также можете столкнуться с случаем, когда содержимое было сгруппировано в объект, который выглядит как одно изображение.
Aspose.Words Предоставляет функциональность для извлечения этого типа контента таким же образом, как вы можете извлечь простое изображение из формы. В этой статье описывается, как использовать эту функциональность для отображения форм независимо от документа.
Типы форм в Aspose.Words
Все содержимое в уровне чертежа документа представлено Shape или GroupShape Узел в узле Aspose.Words Модуль объекта документаDOM). Таким контентом могут быть текстовые поля, изображения, автоформы, объекты OLE и т.д. Некоторые поля также импортируются в качестве форм, например, INCLUDEPICTURE
поле.
Простое изображение представлено a Shape узел ShapeType.Image. Этот узел формы не имеет дочерних узлов, но данные изображения, содержащиеся в этом узле формы, могут быть доступны через Shape.ImageData собственность. С другой стороны, форма также может состоять из многих детских узлов. Например, форма текстового ящика, которая представлена ShapeType.TextBox свойство, может состоять из множества узлов, таких как Paragraph и Table. Большинство форм могут включать Paragraph и Table Узлы блочного уровня. Это те же узлы, что и в основном теле. Формы всегда являются частями какого-либо абзаца, либо включены непосредственно в строку, либо прикреплены к Пункт, “Плыть” в любом месте страницы документа.
Документ также может содержать формы, которые сгруппированы вместе. Groupможно включить в Microsoft Word путем выбора нескольких объектов и щелчка “Group” в меню правого клика.
В Aspose.Words, Эти группы форм представлены GroupShape Узел. Они также могут быть использованы таким же образом для отображения всей группы на изображении.
Формат DOCX может содержать специальные типы изображений, такие как диаграммы или диаграммы. Эти формы также представлены через Shape узел Aspose.Words, Это также обеспечивает аналогичный метод для визуализации их в виде изображений. По замыслу, форма не может содержать другую форму в детстве, если только эта форма не является изображением.ShapeType.Image). Например, Microsoft Word Не позволяет вставить текстовый ящик в другой текстовый ящик.
Типы формы, описанные выше, обеспечивают специальный метод для рендеринга форм через ShapeRenderer класс. Примером этого является ShapeRenderer Класс извлекается для Shape или GroupShape через GetShapeRenderer методом или путем прохождения Shape Для строителя этого ShapeRenderer класс. Этот класс обеспечивает доступ к членам, что позволяет придать форму следующим элементам:
- Файл на диске с использованием Save метод перегрузки
- Поток с использованием Save метод перегрузки
- Графика Объект, используя RenderToSize и RenderToScale методы
Отображение в File или Stream
The Save Способ обеспечивает перегрузки, которые отображают форму непосредственно в файл или поток. Обе перегрузки принимают пример ImageSaveOptions класс, что позволяет определить варианты рендеринга формы. Это работает так же, как и Document.Save метод. Несмотря на то, что этот параметр необходим, вы можете передать нулевое значение, указав, что нет пользовательских опций.
Форма может быть экспортирована в любом формате изображения, указанном в SaveFormat перечисление. Например, изображение может быть визуализировано как растровое изображение, такое как JPEG, путем указания SaveFormat.Jpeg перечисление, или в качестве векторного изображения, такого как ЭМП, путем указания SaveFormat.Emf.
Приведенный ниже пример кода иллюстрирует отображение формы изображения ЭМП отдельно от документа и сохранение на диск:
Приведенный ниже пример кода иллюстрирует преобразование формы в изображение JPEG отдельно от документа и сохранение в потоке:
The ImageSaveOptions Класс позволяет указать множество опций, которые контролируют, как визуализируется изображение. Описанная выше функциональность может быть применена таким же образом к GroupShape и Shape Узлы.
Перейти к a Graphics
Объект
Передача непосредственно в a Graphics объект позволяет определить собственные настройки и состояние для Graphics объект. Общий сценарий включает в себя преобразование формы непосредственно в Graphics объект, извлеченный из Windows Форма или Bitmap. Когда Shape Узел визуализируется, настройки будут влиять на внешний вид формы. Например, вы можете повернуть или масштабировать форму, используя RotateTransform или ScaleTransform Методы для Graphics объект.
Приведенный ниже пример показывает, как придать форму Graphics объект отдельно от документа и применить ротацию к визуализируемому изображению:
Точно так же и для RenderToSize метод, РазмерМетод, унаследованный от NodeRendererBase полезен для создания миниатюр контента документа. Размер формы определяется через конструктор. The RenderToSize Метод принимает Graphics объект, координаты X и Y положения изображения, а также размер изображения (ширина и высота), который будет нарисован на Graphics объект.
The Shape могут быть выполнены в определенном масштабе с использованием ShapeRenderer.RenderToScale Метод, унаследованный от NodeRendererBase класс. Это подобно тому, как Document.RenderToScale Метод, который принимает те же основные параметры. Разница между этими двумя методами заключается в том, что ShapeRenderer.RenderToScale Вместо буквального размера вы выбираете значение, которое масштабирует форму во время ее рендеринга. Если значение поплавка равно 1,0, то форма должна быть выполнена на 100% от ее первоначального размера. Поплавковое значение 0,5 уменьшит размер изображения вдвое.
Изображение в форме
The Shape Класс представляет объекты в слое рисунка, такие как AutoShape, текстовое поле, свободная форма, объект OLE, управление ActiveX или изображение. Используя Shape Вы можете создавать или изменять формы в Microsoft Word Документ. Важным свойством формы является ее ShapeType. Формы разных типов могут иметь разные возможности в документе Word. Например, только изображения и формы OLE могут иметь изображения внутри них, в то время как большинство форм могут иметь только текст.
Следующий пример показывает, как визуализировать изображение формы в JPEG-изображение отдельно от документа и сохранить его на диске:
Восстановление размера формы
The ShapeRenderer Класс также предоставляет функциональность для извлечения размера формы в пикселях через GetSizeInPixels метод. Этот метод принимает два поплавковых (единых) параметра – масштаб и DPI, которые используются при расчете размера формы при рендеринге формы. Метод возвращает Size объект, который содержит ширину и высоту расчетного размера. Это полезно, когда требуется заранее знать размер отображаемой формы, например, при создании новой Bitmap из отображаемого вывода.
Приведенный ниже пример показывает, как создать новый объект Bitmap и Graphics с шириной и высотой формы, которая будет отображаться:
При использовании RenderToSize или RenderToScale методы, отображаемый размер изображения также возвращается в SizeF объект. Это может быть назначено переменной и использовано при необходимости.
The SizeInPoints свойство возвращает размер формы, измеренный в точках (см. ShapeRenderer). Результатом является SizeF
Объект, содержащий ширину и высоту.