注意
請注意,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)
-slide1的幻燈片的索引。默認是渲染所有幻燈片。 -
怎么運行的:
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();