有谁知道可以通过 Java 生成/编辑 PowerPoint 2007/2010 演示文稿的任何 API(商业或开源)。我有一个需要编辑/更新的 PowerPoint 2007/2010 格式的模板。到目前为止,我一直在将 .pptx 文件转换为 xml,然后将其编辑并存储为 .pptx。但是文件在打开时会损坏。
有人知道在 Java 中执行此操作的任何其他方法或 API 吗?
有谁知道可以通过 Java 生成/编辑 PowerPoint 2007/2010 演示文稿的任何 API(商业或开源)。我有一个需要编辑/更新的 PowerPoint 2007/2010 格式的模板。到目前为止,我一直在将 .pptx 文件转换为 xml,然后将其编辑并存储为 .pptx。但是文件在打开时会损坏。
有人知道在 Java 中执行此操作的任何其他方法或 API 吗?
我们已经以编程方式完成了它(目前是封闭源代码,抱歉)所以也许可以提供帮助,但要注意一些陷阱。
一是 POI 项目(至少在我们去年查看时)非常不完整。它没有做 PPTX 图表——这是我们想要的一个功能。事实上 POI 站点可能不是最新的,但它们似乎不支持 PowerPoint 20087 格式(http://poi.apache.org/slideshow/index.html)。每个人都推荐这个项目,但我们的评估是它对于通过 Java 生成 PowerPoint 2007 文件几乎没有用处。您的里程可能会有所不同。
当我们查看 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 格式的文档。最好的部分是它是免费的!
另一个可能对您有用的解决方案是Windward Reports(免责声明,我是那里的创始人兼首席执行官)。它使用 PPTX 作为支持的模板格式之一,并合并数据以生成 PPTX(或 PDF 等)输出。
如果您需要的编辑/更新可以通过 Windward 中的数据标签来处理,这对您来说应该是微不足道的。如果标签无法处理您需要的内容,那么这对您不起作用。
要从模板文件生成 PowerPoint 演示文稿,您可以使用PPT Templates。
这个库提供了一个流畅的 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);
}
使用此库,您可以处理模板中的文本和图像。
下面是使用Java生成PowerPoint 2010的方法。
import com.spire.presentation.*;
public class Slides {
public static void main(String[] args) throws Exception {
//Create a PPT document and load file
Presentation presentation = new Presentation();
presentation.loadFromFile("Sample.pptx");
//add new slide at the end of the document
presentation.getSlides().append();
//insert a blank slide before the second slide
presentation.getSlides().insert(1);
//Save the document
presentation.saveToFile("output/AddSlide.pptx", FileFormat.PPTX_2010);
}
}
您可以参考本教程以获取更多详细信息
正如 GrantB 所说,最好的方法是更新create a template
数据并输出到输出 ppt。我们最近这样做是为了为在 ppt 中具有复杂视觉和图表的客户生成报告。你可以看看这里generate ppt in javaload the template
traverse the xml graph