使用Java生成PowerPoint 2007/2010文件

有没有人知道可以通过Java生成/编辑PowerPoint 2007/2010演示文稿的任何API(商业或开源)。 我有一个PowerPoint 2007/2010格式的模板,我需要编辑/更新。 到目前为止,我一直在将.pptx文件转换为xml,然后编辑并将其存储为.pptx。 但是文件在打开时会被破坏。

是否有人知道在Java中执行此操作的任何其他方法或API?

我们已经以编程方式完成了(目前是闭源,对不起)所以可以提供帮助,但要注意一些问题。

一个是POI项目(至少在去年我们看过它时)是非常不完整的。 它没有做PPTX图表 – 这是我们想要的一个function。 事实上,POI站点可能不是最新的,但它们似乎不支持PowerPoint 20087格式( http://poi.apache.org/slideshow/index.html )。 每个人都推荐这个项目,但我们的评估是,通过Java生成PowerPoint 2007文件几乎没用。 你的milage可能会有所不同。

当我们看到它时,Apose也有一些重大的局限性; 不做PowerPoint 2007中的图表是阻碍我们的问题。

另一个问题是PowerPoint 2007可能非常错误。 我们有一些编程生成的PPT文件导致锁定,但在测试时,我们发现我们可以使用PowerPoint 2007中创建的简单PPTX文档重新崩溃和锁定 – 即不是我们的代码。

最后,我们执行了以下操作:将“模板”PowerPoint文件解压缩到文件夹,然后根据需要,使用新值填充模板XML,将其压缩,重命名各种元素并将其作为有效PPTX传递给用户。 工作正常,除了人们编辑文件时奇怪的PowerPoint崩溃。 如果它有市场,我想我们可以将代码打包为web服务(即xml / csv – > PPTX)或组合一个商业软件包,但我们不会免费这样做。

docx4j (apache license)现在包含一个pptx4j组件,可以打开/编辑/保存pptx文件。

是。 查看http://poi.apache.org/ ,他们刚刚发布了3.6版,现在支持Office 2007格式文档。 最好的部分是它是免费的!

要从模板文件生成PowerPoint演示文稿,您可以使用PPT模板 。

该库提供了一个流畅的API来替换PPT模板中的变量:

try(FileOutputStream out = new FileOutputStream("generated.pptx")) { new PptMapper() .text("variable", "Hello") .text("other_variable", "World!") .processTemplate(PptTemplateDemo.class.getResourceAsStream("/title.pptx")) .write(out); } 

使用此库,您可以处理模板中的文本和图像。