Управление объектами чернил в презентации на Java

Введение

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

Aspose.Slides предоставляет типы, необходимые для работы с объектами чернил. Например, интерфейс IInk представляет объект чернил на слайде.

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

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

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

ink_powerpoint1

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

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

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

ink_powerpoint2

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

Кисть используется для рисования линий, соединяющих точки трассы чернил. Кисть имеет собственный цвет и размер, представленные методами IInkBrush.getColor и IInkBrush.getSize .

Установка цвета кисти чернил

Этот код Java показывает, как установить цвет кисти чернил:

import com.aspose.slides.*;
import java.awt.Color;

Presentation presentation = new Presentation("pres.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IInk ink = (IInk) slide.getShapes().get_Item(0);
    IInkBrush brush = ink.getTraces()[0].getBrush();
    brush.setColor(Color.RED);
} finally {
    presentation.dispose();
}

Установка размера кисти чернил

Этот код Java показывает, как установить размер кисти чернил:

import com.aspose.slides.*;
import java.awt.Dimension;

Presentation presentation = new Presentation("pres.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IInk ink = (IInk) slide.getShapes().get_Item(0);
    IInkBrush brush = ink.getTraces()[0].getBrush();
    Dimension brushSize = new Dimension(5, 10);
    brush.setSize(brushSize);
} finally {
    presentation.dispose();
}

Как правило, ширина и высота кисти не совпадают, поэтому PowerPoint не отображает размер кисти (соответствующий раздел данных серый). Когда ширина и высота кисти совпадают, PowerPoint отображает её размер так:

ink_powerpoint3

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

ink_powerpoint4

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

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

ink_powerpoint5

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

ink_powerpoint6

Управление отображением чернил при экспорте и визуализации

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

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

Вывод Свойство параметров чернил
PDF PdfOptions.getInkOptions
HTML HtmlOptions.getInkOptions
SVG SVGOptions.getInkOptions
TIFF TiffOptions.getInkOptions
Slide image RenderingOptions.getInkOptions

Следующие методы IInkOptions раскрывают те же два параметра:

  • IInkOptions.getHideInk определяет, включаются ли объекты чернил в вывод. Значение по умолчанию false.
  • IInkOptions.getInterpretMaskOpAsOpacity определяет, интерпретируется ли операция маски как непрозрачность при визуализации кисти чернил. Значение по умолчанию true; вызовите IInkOptions.setInterpretMaskOpAsOpacity с false, чтобы использовать операцию ROP вместо неё.

Скрыть объекты чернил в PDF‑выводе

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

Следующий пример Java экспортирует презентацию в PDF, скрывая все объекты чернил:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    PdfOptions pdfOptions = new PdfOptions();
    pdfOptions.getInkOptions().setHideInk(true);

    presentation.save("presentation_without_ink.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

Скрыть объекты чернил при визуализации слайда как изображения

Чтобы скрыть объекты чернил при визуализации слайдов в виде растровых изображений, настройте RenderingOptions.getInkOptions и передайте параметры визуализации в ISlide.getImage.

Следующий пример Java визуализирует первый слайд как PNG‑изображение без объектов чернил:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    RenderingOptions renderingOptions = new RenderingOptions();
    renderingOptions.getInkOptions().setHideInk(true);

    ISlide slide = presentation.getSlides().get_Item(0);
    IImage image = slide.getImage(renderingOptions);
    try {
        image.save("slide_without_ink.png", ImageFormat.Png);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Управление визуализацией маски чернил

Настройка IInkOptions.getInterpretMaskOpAsOpacity определяет, как операции маски интерпретируются при визуализации кистей чернил. Значение по умолчанию true, что использует непрозрачность. Чтобы вместо этого использовать операцию ROP, вызовите IInkOptions.setInterpretMaskOpAsOpacity с false.

Следующий пример Java экспортирует слайд в SVG и использует визуализацию на основе ROP для операций маски чернил:

import com.aspose.slides.*;
import java.io.FileOutputStream;
import java.io.IOException;

Presentation presentation = new Presentation("presentation.pptx");
try {
    SVGOptions svgOptions = new SVGOptions();
    svgOptions.getInkOptions().setInterpretMaskOpAsOpacity(false);

    FileOutputStream stream = new FileOutputStream("slide.svg");
    ISlide slide = presentation.getSlides().get_Item(0);
    slide.writeAsSvg(stream, svgOptions);
} finally {
    presentation.dispose();
}

То же самое настройка может быть применена через TiffOptions.getInkOptions при экспорте презентации или визуализации слайда в TIFF.

Выберите, скрывать или сохранять чернила

Когда вам нужна чистая версия аннотированной презентации для распространения без отметок рецензирования, вызовите IInkOptions.setHideInk с true во время экспорта.

Оставьте IInkOptions.getHideInk со значением по умолчанию false, когда аннотации чернил являются частью ожидаемого содержимого, например, комментарии рецензентов, рукописные заметки, выделения или рисунки, которые должны оставаться видимыми в экспортированном результате. Это позволяет приложениям генерировать отдельные рецензионные и финальные выводы из одной и той же презентации без изменения исходных объектов чернил.

Часто задаваемые вопросы

Можно ли изменить цвет или размер существующего штриха чернил?

Да. Получите трассу через IInk.getTraces, затем измените её IInkTrace.getBrush. Вызовите IInkBrush.setColor или IInkBrush.setSize для изменения кисти.

Скрытие чернил изменяет исходную презентацию?

Нет. Вызов IInkOptions.setHideInk влияет только на визуализированный или экспортированный результат; он не удаляет и не изменяет объекты чернил в исходной презентации.

Какие форматы экспорта поддерживают параметры чернил?

Вы можете настроить параметры чернил для PDF, HTML, SVG, TIFF и растровых изображений слайдов через соответствующие параметры экспорта или визуализации, показанные выше.

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