2010-01-28 66 views
19

有誰知道任何可以通過Java生成/編輯PowerPoint 2007/2010演示文稿的API(商業或開放源代碼)。我有一個PowerPoint 2007/2010格式的模板,需要編輯/更新。到目前爲止,我已經將.pptx文件轉換爲xml,然後編輯並將其存儲爲.pptx。但該文件在打開時被破壞。使用Java生成PowerPoint 2007/2010文件

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

+0

我假設它*實際上*在保存時被損壞,並且您在打開時收到消息。也就是說,OpenOffice.org是基於Java的... – 2010-01-28 06:27:11

回答

5

是的。查看http://poi.apache.org/,他們剛發佈了3.6版本,現在支持Office 2007格式的文檔。最好的部分是它是免費的!

7

docx4j(apache許可證)現在包含一個pptx4j組件,它可以打開/編輯/保存pptx文檔。

9

我們已經通過編程完成了它(關閉源代碼,抱歉),所以可能會有所幫助,但要注意幾個問題。

一個是POI項目(至少當我們去年看過),是相當不完整的。它沒有做PPTX圖表 - 這是我們想要的一個功能。事實上,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)或者組合一個商業軟件包,但我們不會免費的。

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); 
} 

有了這個庫,你可以處理模板中的文字和圖片。