当前位置: 首页 > 知识库问答 >
问题:

使用XSLF(Apache POI项目)向Powerpoint幻灯片添加形状

莫选
2023-03-14

ApachePOI项目解释了如何从powerpoint幻灯片中读取形状http://poi.apache.org/slideshow/xslf-cookbook.html#GetShapes

但是,我找不到任何关于如何使用库的这一部分向powerpoint幻灯片添加形状的文档。如果我使用旧的powerpoint格式(ppt而不是pptx),我可以使用图书馆的hslf部分,并执行以下操作:

SlideShow ppt = new SlideShow();
//add first slide
Slide s1 = ppt.createSlide();

// create shapes./ 
java.awt.geom.GeneralPath path = new java.awt.geom.GeneralPath();
path.moveTo(100, 100);
path.lineTo(200, 100);
path.curveTo(50, 45, 134, 22, 78, 133);
path.curveTo(10, 45, 134, 56, 78, 100);
path.lineTo(100, 200);
path.closePath();

Freeform shape = new Freeform();
shape.setPath(path);
s1.addShape(shape);

//save changes in a file
FileOutputStream out;
try {
    out = new FileOutputStream("slideshow.ppt");
    ppt.write(out);
    out.close(); 
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException ex) {
    e.printStakTrace();
}

如何使用库的xlsf部分执行类似操作,从而生成pptx?

谢谢

共有1个答案

夏振国
2023-03-14

其实很相似。。。

XMLSlideShow ppt = new XMLSlideShow();
XSLFSlide s1 = ppt.createSlide();

// create shapes 
java.awt.geom.Path2D.Double path = new java.awt.geom.Path2D.Double();
path.moveTo(100, 100);
path.lineTo(200, 100);
path.curveTo(50, 45, 134, 22, 78, 133);
path.curveTo(10, 45, 134, 56, 78, 100);
path.lineTo(100, 200);
path.closePath();

XSLFFreeformShape shape = s1.createFreeform();
shape.setPath(path);
shape.setLineWidth(1);
shape.setLineColor(Color.BLACK);

//save changes in a file
FileOutputStream out;
try {
    out = new FileOutputStream("slideshow.pptx");
    ppt.write(out);
    out.close(); 
} catch (Exception ex) {
    ex.printStackTrace();
}

要了解更多可以绘制的示例和Graphics2D上下文,请查看我的PptxGraphics2D类。

 类似资料:
  • 我已经设置了一个宏,它将Excel电子表格中的一些图表保存为图片(作为更大程序的一部分),并且需要一些代码来将这些图片(每张幻灯片一张)粘贴到幻灯片中。 目前,我已经成功地打开了一个带有4张空白幻灯片的PowerPoint演示文稿,甚至还没有成功导入1张图片。 我一直在使用形状之类的方法。addpicture(“C:\Users\restoppathname”),但尚未使其工作

  • 我正在使用ApachePOI库用Java创建powerpoint幻灯片。我们的客户对嵌入式文本、图像和视频感兴趣。现在不需要像图表等花哨的东西。我知道XSLF仍在开发中,还不是一个成熟的产品。 我使用ApachePOI HSLF模型实现了我的目标,但它唯一缺少的是嵌入的视频不会显示任何播放控件。在做了一些研究之后,我发现是pptx和ppt文件标准让事情变得不同。现在为了解决这个问题,我将从HSLF

  • 我试图在演示文稿中添加幻灯片,但遇到了错误。 上下文:我有一个包含200多页的word文件。每个页面包含一个图像(截图)。我想为MS Word文档中的每个图片创建一个PowerPoint文档;我想将图片粘贴到空白幻灯片中。 我在的行中有一个错误

  • 我有一个带有每张幻灯片注释的简报。对于每张幻灯片,我想复制笔记,创建一个带有黑色边框的黄色矩形,然后将笔记粘贴到矩形中。 我开始“拼接”一个宏。这是我目前掌握的情况。它可以工作,但是矩形在顶部(需要在底部),不知道如何将注释复制并粘贴到矩形中: 我需要将“测试”替换为幻灯片注释区域中的文本(可能是几个句子)。 我感谢你的帮助!

  • 上下文:C#中的PowerPoint幻灯片有一个属性slide。名称(通常包含任意字符串值)。在我的C#应用程序中,我想使用这个属性来标识幻灯片(幻灯片顺序不可靠)。 问题:如何手动设置幻灯片。PowerPoint应用程序中的Name属性? 我的问题非常像:“如何在PowerPoint幻灯片中命名对象?”,但只是在幻灯片级别上。 任何帮助都将不胜感激。

  • 现在我生成了一组幻灯片,当我以pps形式打开它时,它不会在幻灯片之间转换,除非我在微软的powerpoint编辑器中打开它(我可以在其中添加转换)并保存它。然后它可以正常转换。 我认为这与幻灯片母版有关:https://poi.apache.org/apidocs/org/apache/poi/xslf/usermodel/XSLFSlideMaster.html但我不确定它是如何使用的,因为它说