Рендерні форми Окремо з документа

При обробці документів, загальним завданням є вилучення всіх зображень, знайдених в документі і вивезення їх на зовнішнє місце. Це завдання стає простою з Aspose.Words API, який вже надає функціональність для отримання та збереження даних зображень. Тим не менш, іноді ви можете аналогічно витягувати інші типи графічного контенту, який представлений різними типами об’єкта малювання, наприклад, текстова коробка, що містить абзаци, форму стріли та невеликий образ. Не існує прямолінійного способу надання цього об’єкту, оскільки це поєднання окремих елементів контенту. Ви також можете зіткнутися з кейсом, коли вміст було зібрано в об’єкт, який виглядає як єдиний образ.

Aspose.Words забезпечує функціональність для вилучення цього типу вмісту таким же чином, ви можете витягти простий образ з форми, що дає вміст. Ця стаття описує, як використовувати цю функціональність, щоб надати форми самостійно з документа.

Типи форм у Aspose.Words

Весь вміст в шарі креслення документа представлений Shape або GroupShape вузол в Aspose.Words Модуль об’єкта документа (Document)DOM). Цей вміст може бути текстовими ящиками, зображеннями, AutoShapes, об’єктами OLE тощо. Деякі поля також імпортуються як форми, наприклад, INCLUDEPICTURE поле.

Простий образ представлений Shape вузол ShapeType.IMAGEй Ця вершина форми не має дочірньих вузлів, але дані зображення, що містяться в цій вершині форми, можуть бути доступні Shape.image_data майно. З іншого боку, форма також може бути виконана з багатьох дочірніх вузлів. Наприклад, форма текстової коробки, яка представлена ShapeType.TEXT_BOX властивість, може бути виконана з багатьох вузлів, таких як Paragraph і Tableй Більшість форм можна включати в себе Paragraph і Table блок-рівневі вузли. Це ті ж самі вузли, які з’являються в головному тілі. Види завжди є частиною деяких абзаців, або включені безпосередньо в лінію або анкеровані до Paragraph, але “плавлення” в будь-якій точці документа.

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, який також надає аналогічний метод, що надає їм як зображення. По дизайну форма не містить іншої форми як дитини, якщо ця форма є зображенням (04/07/2019)ShapeType.IMAGE). Наприклад, Microsoft Word не дозволяє вставляти текстове поле в іншому текстовому вікні.

Види форми, описані вище, забезпечують особливий метод, щоб надати фігури через форму ShapeRenderer клас. Приклад екземпляра ShapeRenderer клас отримується для Shape або GroupShape через get_shape_renderer метод або шляхом проходження Shape до конструктора ShapeRenderer клас. Цей клас надає доступ до членів, які дозволяють надати форму наступним чином:

  • Файл на диску
  • Потік

Відступ до файлу або потоку

Про нас save метод надає перевантаження, які надають форму безпосередньо на файл або потік. Обидва перевантаження приймають екземпляр ImageSaveOptions клас, який дозволяє визначити варіанти надання форми. Це працює так само, як і Document.save метод. Незважаючи на те, що цей параметр необхідний, ви можете передати значення null, вказавши, що немає користувацьких варіантів.

Форма може бути експортована в будь-який формат зображення, зазначений в SaveFormat заохочення. Наприклад, зображення можна надати як растровий образ, наприклад, JPEG, вказавши SaveFormat.JPEG enumeration, або як векторний образ, наприклад EMF, вказавши SaveFormat.EMFй

Приклад коду нижче ілюструє форму на зображення EMF окремо від документа і збереження диску:

r = shape.get_shape_renderer()

# Define custom options which control how the image is rendered. Render the shape to the JPEG raster format.
imageOptions = aw.saving.ImageSaveOptions(aw.SaveFormat.EMF)
imageOptions.scale = 1.5
        
# Save the rendered image to disk.
r.save(docs_base.artifacts_dir + "TestFile.RenderToDisk_out.emf", imageOptions)

Приклад коду нижче ілюструє форму на зображення JPEG окремо від документа і збереження потоку:

r = shape.get_shape_renderer()

# Define custom options which control how the image is rendered. Render the shape to the vector format EMF.
imageOptions = aw.saving.ImageSaveOptions(aw.SaveFormat.JPEG)
        
# Output the image in gray scale
imageOptions.image_color_mode = aw.saving.ImageColorMode.GRAYSCALE

# Reduce the brightness a bit (default is 0.5f).
imageOptions.image_brightness = 0.45
        
stream =  io.FileIO(docs_base.artifacts_dir + "TestFile.RenderToStream_out.jpg", "w+b")

# Save the rendered image to the stream using different options.
r.save(stream, imageOptions)

# Close the stream
stream.close()

Про нас ImageSaveOptions клас дозволяє вказати різні параметри, які контролюють зображення. Функціональність, описана вище, може бути застосована таким же чином до GroupShape і Shape вершини.

Рендеринг форми зображення

Про нас Shape клас являє собою об’єкти в шарі малювання, такі як AutoShape, текстова коробка, форма, об’єкт OLE, управління ActiveX або малюнок. Використання Shape клас, ви можете створювати або змінювати форми в Microsoft Word документ. Важливою властивістю форми є її shape_typeй Види різних типів можуть мати різні можливості у документі Word. Наприклад, лише зображення і форми OLE можуть мати зображення всередині них, тоді як більшість форм можуть мати текст тільки.

Наступний приклад показує, як відобразити зображення форми на зображення JPEG окремо від документа і зберегти його на диск:

# Save the rendered image to disk.
shape.get_shape_renderer().save(docs_base.artifacts_dir + "TestFile.RenderShapeImage.jpeg", None)

Видалення розміру форми

Про нас ShapeRenderer клас також забезпечує функціональність для отримання розміру форми в пікселях через get_size_in_pixels метод. Цей метод приймає два плаваючі (Single) параметри – масштаб і DPI, які використовуються при розрахунку розміру форми при наведенні форми. Спосіб повертає метод Size об’єкт, який містить ширину і висоту розрахункового розміру. Це корисно, коли потрібно знати розмір рендерованої форми заздалегідь. Про нас size_in_points майно повертається розмір форми, вимірюється в точках. Результати SizeF об’єкт, що містить ширину і висоту. Також можна використовувати bounds_in_points майно для отримання фактичних меж форми.