使用Docx4j操作PPT指南系列(一)

weixin_33858249發表於2017-11-16

使用Docx4j操作PPT指南系列(一)

                                                         —— pptx文件的生成與新增新頁

寫在最前

        由於專案需要系統生成ppt文件,在開源技術中選定了docx4j。docx4j操作ppt的文件幾乎沒有(中文的就更加鳳毛麟角了),所有的東西只能自己去摸索,因此才有了這一系列的文件,也算是拋磚引玉,受限於專案使用場景,本系列僅對專案中使用的一些功能進行描述,我想差不多能夠涵蓋基本的功能,歡迎各位看官與我進行交流,共同進步。

準備工作

下載docx4j,專案網址:http://www.docx4java.org/trac/docx4j

下載地址:

Maven配置:

<dependency>
<groupId>org.docx4j</groupId>
<artifactId>docx4j</artifactId>
<version>2.7.1</version>
</dependency>

注意:docx4j主要用於操作Office2007版本。

建立ppt文件


public class CreatePPTX
{

   public static void main(String[] args)
     throws Exception
   {
     String outputfilepath = "c://pptx-test.pptx";
 

     // 建立文件的主體
     PresentationMLPackage presentationMLPackage = PresentationMLPackage.createPackage();

    // 獲取MainPresentationPart,實際上使用 

   //  presentationMLPackage.getMainPresentationPart();   方法也可以


     MainPresentationPart pp = (MainPresentationPart)presentationMLPackage.getParts().getParts().get(new PartName("/ppt/presentation.xml"));
 

     // 獲取佈局資訊,實際上是獲取幻燈片母版的佈局頁,這個功能很重要。

    // 建立一個新頁時必須應用一個佈局

    // "/ppt/slideLayouts/slideLayout1.xml"這個是母版頁的id,具體要看母版中有多少布

    // 局樣式,是1、2、3、4依次排列的
     SlideLayoutPart layoutPart = (SlideLayoutPart)presentationMLPackage.getParts().getParts().get(new PartName("/ppt/slideLayouts/slideLayout1.xml"));
 

     // 建立一個新頁,一定要帶上佈局頁資訊,否則開啟ppt時會報錯,

     // 並且自動指定一個預設的佈局樣式

     // "/ppt/slides/slide1.xml" 每一頁的partName不能重複
     SlidePart slidePart = PresentationMLPackage.createSlidePart(pp, layoutPart, new PartName("/ppt/slides/slide1.xml"));
 

    // 儲存成檔案
     presentationMLPackage.save(new File(outputfilepath));
 
     System.out.println("\n\n done .. saved " + outputfilepath);
   }
}

個人建議不要直接建立新的ppt檔案,一般對於企業來說都會有幾種特定的ppt模板,直接使用這些模板可以節省大量的時間,而且封面頁以及母版的佈局都是定製好的,只需要用就可以了。

唯一程式碼上有所區別,是從一個檔案中載入的,如下:

PresentationMLPackage presentationMLPackage = PresentationMLPackage.load(new File(
     PSMSConstants.REPORT_PPT2007_TEMPLATE_PATH));

OK, 在這一部分內容中,應該以及掌握了使用docx4j建立pptx檔案以及新增內容頁的方法,在下一部分中,將介紹如何向內容頁中新增文字和圖形等內容。



本文轉自william_xu 51CTO部落格,原文連結:http://blog.51cto.com/williamx/758955,如需轉載請自行聯絡原作者

相關文章