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

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

Свойства кисти для рисования
Кисть используется для рисования линий, соединяющих точки следа черни. Кисть имеет собственный цвет и размер, представленные методами InkBrush.getColor и InkBrush.getSize .
Установить цвет кисти черни
Этот JavaScript‑код показывает, как задать цвет кисти черни:
const aspose = {
slides: require("aspose.slides.via.java")
};
const java = require("java");
const presentation = new aspose.slides.Presentation("pres.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const ink = slide.getShapes().get_Item(0);
const brush = ink.getTraces()[0].getBrush();
const red = java.getStaticFieldValue("java.awt.Color", "RED");
brush.setColor(red);
} finally {
presentation.dispose();
}
Установить размер кисти черни
Этот JavaScript‑код показывает, как задать размер кисти черни:
const aspose = {
slides: require("aspose.slides.via.java")
};
const java = require("java");
const presentation = new aspose.slides.Presentation("pres.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const ink = slide.getShapes().get_Item(0);
const brush = ink.getTraces()[0].getBrush();
const brushSize = java.newInstanceSync("java.awt.Dimension", 5, 10);
brush.setSize(brushSize);
} finally {
presentation.dispose();
}
Как правило, ширина и высота кисти не совпадают, поэтому PowerPoint не отображает размер кисти (соответствующий раздел данных серый). Когда ширина и высота кисти совпадают, PowerPoint отображает её размер так:

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

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

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

Управление отображением черни при экспорте и рендеринге
Aspose.Slides предоставляет класс InkOptions для управления тем, как объекты черни отображаются в экспортированном или отрендеренном выводе. С помощью его свойств можно полностью скрыть черни или изменить способ интерпретации операций маски кисти черни.
Параметры черни доступны через параметры экспорта или рендеринга для нескольких типов вывода:
| Вывод | Свойство параметров Ink |
|---|---|
PdfOptions.getInkOptions |
|
| HTML | HtmlOptions.getInkOptions |
| SVG | SVGOptions.getInkOptions |
| TIFF | TiffOptions.getInkOptions |
| Изображение слайда | RenderingOptions.getInkOptions |
Следующие методы InkOptions предоставляют те же два параметра:
- InkOptions.getHideInk определяет, включаются ли объекты черни в выходные данные. Значение по умолчанию
false. - InkOptions.getInterpretMaskOpAsOpacity определяет, интерпретируется ли операция маски как непрозрачность при рендеринге кисти черни. Значение по умолчанию
true; вызовите InkOptions.setInterpretMaskOpAsOpacity сfalse, чтобы вместо этого использовать операцию ROP.
Скрыть объекты черни при выводе PDF
По умолчанию объекты черни остаются видимыми при экспорте. Чтобы создать чистый вывод без рукописных аннотаций или другого контента черни, вызовите InkOptions.setHideInk с true.
Следующий пример JavaScript экспортирует презентацию в PDF, скрывая все объекты черни:
const aspose = {
slides: require("aspose.slides.via.java")
};
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const pdfOptions = new aspose.slides.PdfOptions();
pdfOptions.getInkOptions().setHideInk(true);
presentation.save("presentation_without_ink.pdf", aspose.slides.SaveFormat.Pdf, pdfOptions);
} finally {
presentation.dispose();
}
Скрыть объекты черни при рендеринге слайда как изображения
Чтобы скрыть объекты черни при рендеринге слайдов в виде растровых изображений, настройте RenderingOptions.getInkOptions и передайте параметры рендеринга в Slide.getImage.
Следующий пример JavaScript рендерит первый слайд в PNG‑изображение без объектов черни:
const aspose = {
slides: require("aspose.slides.via.java")
};
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const renderingOptions = new aspose.slides.RenderingOptions();
renderingOptions.getInkOptions().setHideInk(true);
const slide = presentation.getSlides().get_Item(0);
const image = slide.getImage(renderingOptions);
try {
image.save("slide_without_ink.png", aspose.slides.ImageFormat.Png);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Управление рендерингом маски черни
Параметр InkOptions.getInterpretMaskOpAsOpacity определяет, как операции маски интерпретируются при рендеринге кистей черни. Значение по умолчанию true, что использует непрозрачность. Чтобы вместо этого использовать операцию ROP, вызовите InkOptions.setInterpretMaskOpAsOpacity с false.
Следующий пример JavaScript экспортирует слайд в SVG и использует рендеринг на основе ROP для операций маски черни:
const aspose = {
slides: require("aspose.slides.via.java")
};
const java = require("java");
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const svgOptions = new aspose.slides.SVGOptions();
svgOptions.getInkOptions().setInterpretMaskOpAsOpacity(false);
const outputStream = java.newInstanceSync("java.io.FileOutputStream", "slide.svg");
try {
const slide = presentation.getSlides().get_Item(0);
slide.writeAsSvg(outputStream, svgOptions);
} finally {
outputStream.close();
}
} finally {
presentation.dispose();
}
То же самое можно применить через TiffOptions.getInkOptions при экспорте презентации или рендеринге слайда в TIFF.
Выберите, скрывать или сохранять черни
Когда вам нужна чистая версия аннотированной презентации для распространения без отметок рецензирования, вызовите InkOptions.setHideInk с true во время экспорта.
Оставьте InkOptions.getHideInk со значением по умолчанию false, если аннотации черни являются частью задуманного контента, например, комментарии рецензента, рукописные заметки, выделения или рисунки, которые должны оставаться видимыми в экспортированном результате. Это позволяет приложениям генерировать отдельные версии для рецензирования и финального вывода из одной и той же презентации без изменения исходных объектов черни.
Часто задаваемые вопросы
Можно ли изменить цвет или размер существующего штриха черни?
Да. Получите след через 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.