Управление объектами чернил в презентациях с помощью Python

Введение

PowerPoint предоставляет возможность рисования чернилами, позволяющую рисовать произвольные штрихи. Чернила можно использовать для выделения других объектов, отображения связей и процессов, а также привлечения внимания к определённым элементам слайда.

Пространство имён aspose.slides.ink содержит классы, необходимые для работы с объектами чернил. Например, класс Ink представляет объект чернил на слайде.

Различия между обычными объектами и объектами чернил

Объекты на слайде PowerPoint обычно представлены объектами формы. В своей простейшей форме форма — это контейнер, определяющий область самого объекта (его рамку) вместе с такими свойствами, как размер контейнера, форма и фон. Подробнее см. Shape Layout Format.

Однако когда PowerPoint обрабатывает объект чернил, он игнорирует все свойства рамки объекта (контейнера), кроме его размера. Размер области контейнера определяется стандартными свойствами Ink.width и Ink.height:

ink_powerpoint1

Трассы черилл

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

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

ink_powerpoint2

Свойства кисти для рисования

Кисть используется для рисования линий, соединяющих точки трассы чернил. Её свойства 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 показывает её размер так:

ink_powerpoint3

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

ink_powerpoint4

Контейнер (рамка) не учитывает размер кистей — он всегда предполагает, что толщина линии равна нулю (см. предыдущее изображение).

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

ink_powerpoint5

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

ink_powerpoint6

Управление отображением чернил при экспорте и рендеринге

Aspose.Slides предоставляет класс InkOptions для управления тем, как объекты чернил отображаются в экспортируемом или отрисованном выводе. С его помощью можно полностью скрыть чернила или изменить способ интерпретации маски кисти чернил.

Параметры чернил доступны через параметры экспорта или рендеринга для нескольких форматов вывода:

Вывод Свойство Ink options
PDF 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 и растровых изображений слайдов через соответствующие параметры экспорта или рендеринга, перечисленные выше.

Дополнительные материалы