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

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

Свойства кисти для рисования
Кисть используется для рисования линий, соединяющих точки трека чернил. У кисти есть собственный цвет и размер, представленные методами InkBrush.getColor и InkBrush.getSize.
Установка цвета кисти чернил
Этот пример Python показывает, как установить цвет кисти чернил:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, Ink
Color = jpype.JClass("java.awt.Color")
presentation = Presentation("pres.pptx")
try:
slide = presentation.getSlides().get_Item(0)
ink = slide.getShapes().get_Item(0)
if isinstance(ink, Ink):
traces = ink.getTraces()
if len(traces) > 0:
brush = traces[0].getBrush()
brush.setColor(Color.RED)
else:
print("The ink object has no traces.")
else:
print("The first shape is not an ink object.")
finally:
presentation.dispose()
Установка размера кисти чернил
Этот пример Python показывает, как установить размер кисти чернил:
import jpape
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, Ink
Dimension = jpype.JClass("java.awt.Dimension")
presentation = Presentation("pres.pptx")
try:
slide = presentation.getSlides().get_Item(0)
ink = slide.getShapes().get_Item(0)
if isinstance(ink, Ink):
traces = ink.getTraces()
if len(traces) > 0:
brush = traces[0].getBrush()
brush_size = Dimension(5, 10)
brush.setSize(brush_size)
else:
print("The ink object has no traces.")
else:
print("The first shape is not an ink object.")
finally:
presentation.dispose()
Как правило, ширина и высота кисти не совпадают, поэтому PowerPoint не отображает размер кисти (соответствующий раздел данных серый). Когда ширина и высота кисти совпадают, PowerPoint отображает её размер так:

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

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

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

Управление отображением чернил при экспорте и рендеринге
Aspose.Slides предоставляет класс InkOptions для управления тем, как объекты чернил отображаются в экспортированном или отрендеренном выводе. С помощью его свойств можно полностью скрыть чернила или изменить способ интерпретации маски кисти чернил.
Параметры чернил доступны через параметры экспорта или рендеринга для нескольких типов вывода:
| Output | Ink options property |
|---|---|
| PdfOptions.getInkOptions | |
| HTML | HtmlOptions.getInkOptions |
| SVG | SVGOptions.getInkOptions |
| TIFF | TiffOptions.getInkOptions |
| Slide image | RenderingOptions.getInkOptions |
Следующие методы InkOptions раскрывают те же две настройки:
- getHideInk определяет, включаются ли объекты чернил в вывод. Значение по умолчанию —
False. - getInterpretMaskOpAsOpacity определяет, интерпретируется ли операция маски как непрозрачность при рендеринге кисти чернил. Значение по умолчанию —
True; вызов setInterpretMaskOpAsOpacity сFalseпереключает использование операции ROP.
Скрыть объекты чернил в PDF‑выводе
По умолчанию объекты чернил остаются видимыми при экспорте. Чтобы получить чистый вывод без рукописных аннотаций или другого чернильного содержимого, вызовите InkOptions.setHideInk с True.
Следующий пример Python экспортирует презентацию в PDF, скрывая все объекты чернил:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, PdfOptions, SaveFormat
presentation = Presentation("presentation.pptx")
try:
pdf_options = PdfOptions()
pdf_options.getInkOptions().setHideInk(True)
presentation.save("presentation_without_ink.pdf", SaveFormat.Pdf, pdf_options)
finally:
presentation.dispose()
Скрыть объекты чернил при рендеринге слайда в изображение
Чтобы скрыть объекты чернил при рендеринге слайдов в растровые изображения, настройте RenderingOptions.getInkOptions и передайте параметры рендеринга в Slide.getImage.
Следующий пример Python рендерит первый слайд в PNG‑изображение без объектов чернил:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, RenderingOptions, ImageFormat
presentation = Presentation("presentation.pptx")
try:
rendering_options = RenderingOptions()
rendering_options.getInkOptions().setHideInk(True)
slide = presentation.getSlides().get_Item(0)
image = slide.getImage(rendering_options)
try:
image.save("slide_without_ink.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
Управление рендерингом маски чернил
Настройка InkOptions.getInterpretMaskOpAsOpacity определяет, как операции маски интерпретируются при рендеринге кистей чернил. Значение по умолчанию — True, что использует непрозрачность. Чтобы вместо этого использовать операцию ROP, вызовите InkOptions.setInterpretMaskOpAsOpacity с False.
Следующий пример Python экспортирует слайд в SVG и использует рендеринг на основе ROP для операций маски чернил:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SVGOptions
FileOutputStream = jpype.JClass("java.io.FileOutputStream")
presentation = Presentation("presentation.pptx")
try:
svg_options = SVGOptions()
svg_options.getInkOptions().setInterpretMaskOpAsOpacity(False)
stream = FileOutputStream("slide.svg")
try:
slide = presentation.getSlides().get_Item(0)
slide.writeAsSvg(stream, svg_options)
finally:
stream.close()
finally:
presentation.dispose()
То же самое можно применить через TiffOptions.getInkOptions при экспорте презентации или рендеринге слайда в TIFF.
Выбор: скрывать или сохранять чернила
Когда вам требуется чистая версия аннотированной презентации для распространения без отметок рецензирования, вызовите InkOptions.setHideInk с True во время экспорта.
Оставьте InkOptions.getHideInk со значением False, если чернильные аннотации являются частью предполагаемого содержимого, например, комментариев рецензента, рукописных заметок, выделений или рисунков, которые должны оставаться видимыми в экспортированном результате. Это позволяет приложениям генерировать отдельные версии для рецензирования и финального результата из одной и той же презентации без изменения исходных чернильных объектов.
FAQ
Можно ли изменить цвет или размер существующего штриха чернил?
Да. Получите трек через Ink.getTraces, затем измените его InkTrace.getBrush. Вызовите InkBrush.setColor или InkBrush.setSize, чтобы изменить кисть.
Изменяет ли скрытие чернил исходную презентацию?
Нет. Вызов InkOptions.setHideInk влияет только на отрендеренный или экспортированный результат; он не удаляет и не изменяет объекты чернил в исходной презентации.
Какие форматы экспорта поддерживают параметры чернил?
Вы можете настроить параметры чернил для 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.