POI-PPT官方文檔

注意

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

特徵索引

建立新的演示文稿
閱讀現有演示文稿
使用預約義的佈局建立幻燈片
刪除幻燈片
從新訂購幻燈片
更改幻燈片大小
閱讀形狀
添加圖片
閱讀演示文稿中包含的圖像
格式化文本
超連接
將.pptx幻燈片轉換爲圖像
合併多個演示文稿apache

新演示文稿

如下代碼建立一個新的.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.ide

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 [選項]
  • 選項:
    -scale 比例因子(默認值爲1.0)
    -slide 1的幻燈片的索引。默認是渲染全部幻燈片。
    佈局

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

    slide.draw(graphics);

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

合併多個演示文稿

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();
相關文章
相關標籤/搜索