管理 Android 上的演示文稿墨迹对象
介绍
PowerPoint 提供了一个墨迹功能,允许您绘制自由形状的笔画。墨迹可用于突出显示其他对象、展示连接和流程,以及吸引对幻灯片上特定项目的注意。
Aspose.Slides 提供了处理墨迹对象所需的类型。例如,IInk 接口表示幻灯片上的墨迹对象。
常规对象与墨迹对象的区别
PowerPoint 幻灯片上的对象通常由形状对象表示。最简单的形式中,形状是一个容器,定义对象本身的区域(其框架),以及容器大小、形状和背景等属性。有关详细信息,请参阅Shape Layout Format。
但是,当 PowerPoint 处理墨迹对象时,它会忽略对象框架(容器)的所有属性,仅保留其大小。容器区域的大小由标准IShape.getWidth 和IShape.getHeight 方法决定:

墨迹痕迹
墨迹痕迹是一种用于记录用户书写数字墨迹时笔尖轨迹的基本元素。痕迹存储一系列相连的点。
最简单的编码形式指定每个采样点的 X 和 Y 坐标。当所有相连的点被渲染时,会产生如下图像:

绘图画笔属性
画笔用于绘制连接墨迹痕迹点的线条。画笔拥有自己的颜色和大小,分别通过IInkBrush.getColor 和IInkBrush.getSize 方法表示。
设置墨迹画笔颜色
以下 Java 代码演示如何设置墨迹画笔的颜色:
import android.graphics.Color;
import com.aspose.slides.*;
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 com.aspose.slides.android.SizeF;
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();
SizeF brushSize = new SizeF(5, 10);
brush.setSize(brushSize);
} finally {
presentation.dispose();
}
通常,画笔的宽度和高度不相等,PowerPoint 不会显示画笔大小(相应的数据区域呈灰色)。当画笔的宽度和高度相等时,PowerPoint 以如下方式显示其大小:

为便于说明,我们将墨迹对象的高度增加,并查看重要的尺寸:

容器(框架)不考虑画笔的大小——它始终假设线条粗细为零(见前图)。
因此,要确定整个墨迹对象的可视区域,必须将其痕迹的画笔大小计入其中。此处,目标对象(手写文本痕迹)已被缩放到容器(框架)的大小。容器大小改变时,画笔大小保持不变,反之亦然。

PowerPoint 对文本对象也采用类似的行为:

控制导出和渲染期间的墨迹外观
Aspose.Slides 提供了IInkOptions 接口,以控制墨迹对象在导出或渲染输出中的显示方式。您可以使用其属性完全隐藏墨迹,或更改墨迹画笔遮罩操作的解释方式。
墨迹选项可通过多种输出类型的导出或渲染选项获取:
| 输出 | Ink 选项属性 |
|---|---|
| PdfOptions.getInkOptions | |
| HTML | HtmlOptions.getInkOptions |
| SVG | SVGOptions.getInkOptions |
| TIFF | TiffOptions.getInkOptions |
| 幻灯片图像 | 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;
Presentation presentation = new Presentation("presentation.pptx");
try {
SVGOptions svgOptions = new SVGOptions();
svgOptions.getInkOptions().setInterpretMaskOpAsOpacity(false);
ISlide slide = presentation.getSlides().get_Item(0);
FileOutputStream stream = new FileOutputStream("slide.svg");
try {
slide.writeAsSvg(stream, svgOptions);
} finally {
stream.close();
}
} finally {
presentation.dispose();
}
相同的设置也可通过TiffOptions.getInkOptions 在导出为 TIFF 或渲染为 TIFF 时使用。
选择隐藏或保留墨迹
当需要为分发而生成不含批注标记的清洁版演示文稿时,请在导出时调用IInkOptions.setHideInk 并传入 true。
如果墨迹批注是预期内容(如审阅评论、手写笔记、突出显示或应保留的绘图),请保持IInkOptions.getHideInk 的默认值 false。这样可在同一演示文稿中生成分别用于审阅和最终发布的输出,而无需修改源墨迹对象。
常见问题
是否可以更改已有墨迹笔画的颜色或大小?
可以。通过IInk.getTraces 获取痕迹,然后更改其IInkTrace.getBrush。调用IInkBrush.setColor 或IInkBrush.setSize 以修改画笔。
隐藏墨迹会改变源演示文稿吗?
不会。调用IInkOptions.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.