Оформление форм Отдельно от документа

При обработке документов общей задачей является извлечение всех изображений, найденных в документе, и экспорт их во внешнее место. Эта задача становится простой с 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 Узлы блочного уровня. Это те же узлы, что и в основном теле. Формы всегда являются частями какого-либо абзаца, либо включены непосредственно в строку, либо прикреплены к Пункт, “Плыть” в любом месте страницы документа.

rendering-shapes-separately-from-a-document_1

Документ также может содержать формы, которые сгруппированы вместе. Groupможно включить в Microsoft Word путем выбора нескольких объектов и щелчка “Group” в меню правого клика.

rendering-shapes-separately-from-a-document_2

В Aspose.Words, Эти группы форм представлены GroupShape Узел. Они также могут быть использованы таким же образом, чтобы визуализировать всю группу.

rendering-shapes-separately-from-a-document_3

Формат DOCX может содержать специальные типы изображений, такие как диаграммы или диаграммы. Эти формы также представлены через Shape узел Aspose.Words, Это также обеспечивает аналогичный метод для визуализации их в виде изображений. По замыслу, форма не может содержать другую форму в детстве, если только эта форма не является изображением.ShapeType.Image). Например, Microsoft Word Не позволяет вставить текстовый ящик в другой текстовый ящик.

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

  • Файл на диске с использованием Save метод перегрузки
  • Поток с использованием Save метод перегрузки
  • .NET графика Объект, используя RenderToSize и RenderToScale методы

Отображение в File или Stream

The Save Способ обеспечивает перегрузки, которые отображают форму непосредственно в файл или поток. Обе перегрузки принимают пример ImageSaveOptions класс, что позволяет определить варианты рендеринга формы. Это работает так же, как и Document.Save метод. Несмотря на то, что этот параметр необходим, вы можете передать нулевое значение, указав, что нет пользовательских опций.

Форма может быть экспортирована в любом формате изображения, указанном в SaveFormat перечисление. Например, изображение может быть визуализировано как растровое изображение, такое как JPEG, путем указания SaveFormat.Jpeg перечисление, или как векторное изображение, такое как ЭМП, путем указания SaveFormat.Emf.

Приведенный ниже пример кода иллюстрирует отображение формы изображения ЭМП отдельно от документа и сохранение на диск:

Приведенный ниже пример кода иллюстрирует преобразование формы в изображение JPEG отдельно от документа и сохранение в потоке:

The ImageSaveOptions Класс позволяет указать множество опций, которые контролируют, как визуализируется изображение. Описанная выше функциональность может быть применена таким же образом к GroupShape и Shape Узлы.

Обращаясь к a .NET Графический объект

Передача непосредственно в a Graphics объект позволяет определить собственные настройки и состояние для Graphics объект. Общий сценарий включает в себя преобразование формы непосредственно в Graphics объект, извлеченный из Windows Форма или Bitmap. Когда Shape Узел визуализируется, настройки будут влиять на внешний вид формы. Например, вы можете повернуть или масштабировать форму, используя RotateTransform или ScaleTransform методы для Graphics объект.

Приведенный ниже пример показывает, как придать форму.NET 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 Объект, содержащий ширину и высоту.