Управление объектами чернил в презентациях с помощью Python
Введение
PowerPoint предоставляет возможность рисования чернилами, позволяющую рисовать произвольные штрихи. Чернила можно использовать для выделения других объектов, отображения связей и процессов, а также привлечения внимания к определённым элементам слайда.
Пространство имён aspose.slides.ink содержит классы, необходимые для работы с объектами чернил. Например, класс Ink представляет объект чернил на слайде.
Различия между обычными объектами и объектами чернил
Объекты на слайде PowerPoint обычно представлены объектами формы. В своей простейшей форме форма — это контейнер, определяющий область самого объекта (его рамку) вместе с такими свойствами, как размер контейнера, форма и фон. Подробнее см. Shape Layout Format.
Однако когда PowerPoint обрабатывает объект чернил, он игнорирует все свойства рамки объекта (контейнера), кроме его размера. Размер области контейнера определяется стандартными свойствами Ink.width и Ink.height:

Трассы черилл
Трасса чернил — это основной элемент, используемый для записи траектории пера, когда пользователь пишет цифровые чернила. Трасса хранит последовательность соединённых точек.
Самая простая форма кодирования указывает координаты X и Y каждой образцовой точки. При отрисовке всех соединённых точек получается изображение, похожее на это:

Свойства кисти для рисования
Кисть используется для рисования линий, соединяющих точки трассы чернил. Её свойства InkBrush.color и InkBrush.size управляют цветом и размером.
Установить цвет кисти чернил
Этот фрагмент кода Python показывает, как задать цвет кисти чернил:
import aspose.slides as slides
import aspose.pydrawing as draw
with slides.Presentation("pres.pptx") as presentation:
ink = presentation.slides[0].shapes[0]
brush = ink.traces[0].brush
brush.color = draw.Color.red
Установить размер кисти чернил
Этот фрагмент кода Python показывает, как задать размер кисти чернил:
import aspose.slides as slides
import aspose.pydrawing as draw
with slides.Presentation("pres.pptx") as presentation:
ink = presentation.slides[0].shapes[0]
brush = ink.traces[0].brush
brush.size = draw.SizeF(5.0, 10.0)
Обычно ширина и высота кисти не совпадают, поэтому PowerPoint не отображает размер кисти (соответствующий раздел данных серый). Когда ширина и высота кисти совпадают, PowerPoint показывает её размер так:

Для наглядности увеличим высоту объекта чернил и рассмотрим важные размеры:

Контейнер (рамка) не учитывает размер кистей — он всегда предполагает, что толщина линии равна нулю (см. предыдущее изображение).
Следовательно, чтобы определить видимую область всего объекта чернил, необходимо учитывать размер кисти его трасс. Здесь целевой объект (трасса рукописного текста) масштабирован до размера контейнера (рамки). Когда размер контейнера меняется, размер кисти остаётся постоянным, и наоборот.

PowerPoint использует аналогичное поведение для текстовых объектов:

Управление отображением чернил при экспорте и рендеринге
Aspose.Slides предоставляет класс InkOptions для управления тем, как объекты чернил отображаются в экспортируемом или отрисованном выводе. С его помощью можно полностью скрыть чернила или изменить способ интерпретации маски кисти чернил.
Параметры чернил доступны через параметры экспорта или рендеринга для нескольких форматов вывода:
| Вывод | Свойство Ink options |
|---|---|
PdfOptions.ink_options |
|
| HTML | HtmlOptions.ink_options |
| SVG | SVGOptions.ink_options |
| TIFF | TiffOptions.ink_options |
| Изображение слайда | RenderingOptions.ink_options |
Через эти свойства доступны два одинаковых параметра:
InkOptions.hide_inkопределяет, включать ли объекты чернил в вывод. Значение по умолчанию —False.InkOptions.interpret_mask_op_as_opacityопределяет, интерпретировать ли операцию маски как непрозрачность при рендеринге кисти чернил. Значение по умолчанию —True; установитеFalse, чтобы использовать операцию ROP.
Скрыть объекты чернил в PDF‑выводе
По умолчанию объекты чернил остаются видимыми при экспорте. Установите InkOptions.hide_ink в значение True, когда требуется чистый вывод без рукописных аннотаций или другого содержимого чернил.
Следующий пример на Python экспортирует презентацию в PDF, скрывая все объекты чернил:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
pdf_options = slides.export.PdfOptions()
pdf_options.ink_options.hide_ink = True
presentation.save("presentation_without_ink.pdf", slides.export.SaveFormat.PDF, pdf_options)
Скрыть объекты чернил при рендеринге слайда в изображение
Чтобы скрыть объекты чернил при рендеринге слайдов в растровые изображения, настройте RenderingOptions.ink_options и передайте параметры рендеринга методу Slide.get_image.
Следующий пример на Python рендерит первый слайд как PNG‑изображение без объектов чернил:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
rendering_options = slides.export.RenderingOptions()
rendering_options.ink_options.hide_ink = True
with presentation.slides[0].get_image(rendering_options) as image:
image.save("slide_without_ink.png", slides.ImageFormat.PNG)
Управление рендерингом маски чернил
Свойство InkOptions.interpret_mask_op_as_opacity управляет тем, как операции маски интерпретируются при рендеринге кистей чернил. Значение по умолчанию — True, что использует непрозрачность. Установите свойство в False, чтобы вместо этого использовать операцию ROP.
Следующий пример на Python экспортирует слайд в SVG и использует рендеринг на основе ROP для операций маски чернил:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
svg_options = slides.export.SVGOptions()
svg_options.ink_options.interpret_mask_op_as_opacity = False
with open("slide.svg", "wb") as svg_stream:
presentation.slides[0].write_as_svg(svg_stream, svg_options)
Тот же параметр можно применить через TiffOptions.ink_options при экспорте презентации или рендеринге слайда в TIFF.
Выбор: скрыть или сохранить чернила
Установите InkOptions.hide_ink в True, когда экспортируемый файл должен быть чистой версией аннотированной презентации, например, окончательной копией для распространения без отметок рецензента.
Оставьте InkOptions.hide_ink со значением по умолчанию False, когда аннотации чернил являются частью предполагаемого содержимого, например, комментариев рецензента, рукописных заметок, подсветок или рисунков, которые должны оставаться видимыми в экспортированном результате. Это позволяет приложениям генерировать отдельные варианты обзора и финального результата из одной и той же презентации без изменения исходных объектов чернил.
FAQ
Можно ли изменить цвет или размер существующего штриха чернилом?
Да. Получите трассу из Ink.traces, затем измените её InkTrace.brush. Вы можете задать свойства InkBrush.color и InkBrush.size кисти.
Изменяет ли скрытие чернил исходную презентацию?
Нет. InkOptions.hide_ink влияет только на отрисованный или экспортированный результат; он не удаляет и не изменяет объекты чернил в исходной презентации.
Какие форматы экспорта поддерживают параметры чернил?
Вы можете настроить параметры чернил для PDF, HTML, SVG, TIFF и растровых изображений слайдов через соответствующие параметры экспорта или рендеринга, перечисленные выше.
Дополнительные материалы
- Чтобы узнать о формах в целом, см. раздел PowerPoint Shapes.
- Для получения информации об эффективных значениях см. Shape Effective Properties.
- Подробности экспорта в PDF доступны в статье Convert PPT and PPTX to PDF.
- Подробности экспорта в HTML доступны в статье Convert PowerPoint Presentations to HTML.
- Подробности экспорта в SVG доступны в статье Render Presentation Slides as SVG Images.
- Подробности экспорта в TIFF доступны в статье Convert PowerPoint Presentations to TIFF.
- Подробности рендеринга слайда в изображение доступны в статье Convert Presentation Slides to Images.