POI-PPT官方文檔


注意

請注意,XSLF仍然處於早期開發階段,並且將來會在發行版中發生不兼容的更改。

特征索引

創建新的演示文稿
閱讀現有演示文稿
使用預定義的布局創建幻燈片
刪除幻燈片
重新訂購幻燈片
更改幻燈片大小
閱讀形狀
添加圖片
閱讀演示文稿中包含的圖像
格式化文本
超鏈接
將.pptx幻燈片轉換為圖像
合並多個演示文稿

新演示文稿

以下代碼創建一個新的.pptx幻燈片,並向其添加一個空白幻燈片:

//創建一個新的空幻燈片
XMLSlideShow ppt = new XMLSlideShow();

//添加第一張幻燈片
XSLFSlide blankSlide = ppt.createSlide();

閱讀現有演示文稿並附加幻燈片

XMLSlideShow ppt = new XMLSlideShow(new FileInputStream("slideshow.pptx"));

//附加一個新的幻燈片到最后
XSLFSlide blankSlide = ppt.createSlide();

從預定義的幻燈片布局創建新的幻燈片

XMLSlideShow ppt = new XMLSlideShow(new FileInputStream("slideshow.pptx"));

//首先看看什么幻燈片布局可用:
System.out.println("可用幻燈片布局:");
for(XSLFSlideMaster master:ppt.getSlideMasters()){
    for(XSLFSlideLayout layout:master.getSlideLayouts()){
        的System.out.println(layout.getType());
    }
}

//空白幻燈片
XSLFSlide blankSlide = ppt.createSlide();

//可以有多個主器件引用多個布局
//為了演示,我們使用第一個(默認)幻燈片母版
XSLFSlideMaster defaultMaster = ppt.getSlideMasters().get(0);

//標題幻燈片
XSLFSlideLayout titleLayout = defaultMaster.getLayout(SlideLayout.TITLE);
//填寫占位符
XSLFSlide slide1 = ppt.createSlide(titleLayout);
XSLFTextShape title1 = slide1.getPlaceholder(0);
title1.setText("First Title");

//標題和內容
XSLFSlideLayout titleBodyLayout = defaultMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
XSLFSlide slide2 = ppt.createSlide(titleBodyLayout);

XSLFTextShape title2 = slide2.getPlaceholder(0);
title2.setText("Second Title");

XSLFTextShape body2 = slide2.getPlaceholder(1);
body2.clearText(); //取消設置任何現有文本
body2.addNewTextParagraph().addNewTextRun().setText("First paragraph");
body2.addNewTextParagraph().addNewTextRun().setText("Second paragraph");
body2.addNewTextParagraph().addNewTextRun().setText("Third paragraph");

刪除幻燈片

XMLSlideShow ppt = new XMLSlideShow(new FileInputStream("slideshow.pptx"));

ppt.removeSlide(0); //要刪除的幻燈片的基於0的索引

重新排列幻燈片

XMLSlideShow ppt = new XMLSlideShow(new FileInputStream("slideshow.pptx"));
列表<XSLFSlide> slides = ppt.getSlides();

XSLFSlide thirdSlide = slides.get(2);
ppt.setSlideOrder(thirdSlide,0); //將第三張幻燈片移動到開頭

如何檢索或更改幻燈片大小

XMLSlideShow ppt = new XMLSlideShow();
//檢索頁面大小。坐標表示為點數(72 dpi)
java.awt.Dimension pgsize = ppt.getPageSize();
int pgx = pgsize.width; //滑動寬度的點數
int pgy = pgsize.height; //滑動高度的點數

//設置新頁面大小
ppt.setPageSize(new java.awt.Dimension(1024,768));

如何讀取特定幻燈片中包含的形狀

以下代碼演示了如何迭代每個幻燈片的形狀。

The following code demonstrates how to iterate over shapes for each slide.

XMLSlideShow ppt = new XMLSlideShow(new FileInputStream("slideshow.pptx"));
// get slides
for (XSLFSlide slide : ppt.getSlides()) {
    for (XSLFShape sh : slide.getShapes()) {
        // name of the shape
        String name = sh.getShapeName();

        // shapes's anchor which defines the position of this shape in the slide
        if (sh instanceof PlaceableShape) {
            java.awt.geom.Rectangle2D anchor = ((PlaceableShape)sh).getAnchor();
        }

        if (sh instanceof XSLFConnectorShape) {
            XSLFConnectorShape line = (XSLFConnectorShape) sh;
            // work with Line
        } else if (sh instanceof XSLFTextShape) {
            XSLFTextShape shape = (XSLFTextShape) sh;
            // work with a shape that can hold text
        } else if (sh instanceof XSLFPictureShape) {
            XSLFPictureShape shape = (XSLFPictureShape) sh;
            // work with Picture
        }
    }
}

將圖片添加到幻燈片

XMLSlideShow ppt = new XMLSlideShow();
XSLFSlide slide = ppt.createSlide();

byte[] pictureData = IOUtils.toByteArray(new FileInputStream("image.png"));

XSLFPictureData pd = ppt.addPicture(pictureData, PictureData.PictureType.PNG);
XSLFPictureShape pic = slide.createPicture(pd);

閱讀演示文稿中包含的圖片

    XMLSlideShow ppt = new XMLSlideShow(new FileInputStream("slideshow.pptx"));
    for(XSLFPictureData data : ppt.getAllPictures()){
        byte[] bytes = data.getData();
        String fileName = data.getFileName();
        
    }

基本文本格式

XMLSlideShow ppt = new XMLSlideShow();
XSLFSlide slide = ppt.createSlide();

XSLFTextBox shape = slide.createTextBox();
XSLFTextParagraph p = shape.addNewTextParagraph();

XSLFTextRun r1 = p.addNewTextRun();
r1.setText("The");
r1.setFontColor(Color.blue);
r1.setFontSize(24.);

XSLFTextRun r2 = p.addNewTextRun();
r2.setText(" quick");
r2.setFontColor(Color.red);
r2.setBold(true);

XSLFTextRun r3 = p.addNewTextRun();
r3.setText(" brown");
r3.setFontSize(12.);
r3.setItalic(true);
r3.setStrikethrough(true);

XSLFTextRun r4 = p.addNewTextRun();
r4.setText(" fox");
r4.setUnderline(true);

如何創建超鏈接

XMLSlideShow ppt = new XMLSlideShow();
XSLFSlide slide = ppt.createSlide();

// assign a hyperlink to a text run
XSLFTextBox shape = slide.createTextBox();
XSLFTextRun r = shape.addNewTextParagraph().addNewTextRun();
r.setText("Apache POI");
XSLFHyperlink link = r.createHyperlink();
link.setAddress("http://poi.apache.org");

PPTX2PNG是將.pptx幻燈片的每個幻燈片轉換為PNG圖像的應用程序

  • 用法:PPTX2PNG [選項] <pptx文件>

  • 選項:
    -scale 比例因子(默認值為1.0)
    -slide 1的幻燈片的索引。默認是渲染所有幻燈片。

  • 怎么運行的:
    XSLFSlide對象實現了一個繪制(Graphics2D圖形)方法,它將幻燈片中的所有形狀遞歸地繪制到提供的圖形畫布中:

          slide.draw(graphics);
    

其中圖形是實現java.awt.Graphics2D的類。在PPTX2PNG中,圖形畫布派生自java.awt.image.BufferedImage,即目標是內存中的圖像,但在一般情況下,您可以傳遞任何兼容的java.awt.Graphics2D實現。該 PPTX2SVG 示例演示了如何使用Apache蠟染到幻燈片轉換成.PPTX SVG格式。

合並多個演示文稿

XMLSlideShow ppt = new XMLSlideShow();
String[] inputs = {"presentations1.pptx", "presentation2.pptx"};
for(String arg : inputs){
    FileInputStream is = new FileInputStream(arg);
    XMLSlideShow src = new XMLSlideShow(is);
    is.close();

    for(XSLFSlide srcSlide : src.getSlides()){
        ppt.createSlide().importContent(srcSlide);
    }
}

FileOutputStream out = new FileOutputStream("merged.pptx");
ppt.write(out);
out.close();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM