18

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

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

4

7 回答 7

11

我们已经以编程方式完成了它(目前是封闭源代码,抱歉)所以也许可以提供帮助,但要注意一些陷阱。

一是 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)或组合成一个商业包,但我们不会免费这样做。

于 2010-08-04T00:14:10.043 回答
7

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

于 2010-07-10T07:01:02.600 回答
5

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

于 2010-01-28T06:28:46.887 回答
0

另一个可能对您有用的解决方案是Windward Reports(免责声明,我是那里的创始人兼首席执行官)。它使用 PPTX 作为支持的模板格式之一,并合并数据以生成 PPTX(或 PDF 等)输出。

如果您需要的编辑/更新可以通过 Windward 中的数据标签来处理,这对您来说应该是微不足道的。如果标签无法处理您需要的内容,那么这对您不起作用。

于 2019-02-03T18:44:23.047 回答
0

要从模板文件生成 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);
}

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

于 2017-09-30T15:16:51.033 回答
0

下面是使用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);
}

}

您可以参考本教程以获取更多详细信息

于 2022-01-21T01:54:38.720 回答
0

正如 GrantB 所说,最好的方法是更新create a template数据并输出到输出 ppt。我们最近这样做是为了为在 ppt 中具有复杂视觉和图表的客户生成报告。你可以看看这里generate ppt in javaload the templatetraverse the xml graph

于 2020-05-02T09:14:23.657 回答