注意

请注意,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();

POI-PPT官方文档的更多相关文章

  1. hbase官方文档(转)

    FROM:http://www.just4e.com/hbase.html Apache HBase™ 参考指南  HBase 官方文档中文版 Copyright © 2012 Apache Soft ...

  2. HBase 官方文档

    HBase 官方文档 Copyright © 2010 Apache Software Foundation, 盛大游戏-数据仓库团队-颜开(译) Revision History Revision ...

  3. HBase官方文档

    HBase官方文档 目录 序 1. 入门 1.1. 介绍 1.2. 快速开始 2. Apache HBase (TM)配置 2.1. 基础条件 2.2. HBase 运行模式: 独立和分布式 2.3. ...

  4. 【AutoMapper官方文档】DTO与Domin Model相互转换(上)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  5. 2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  6. 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  7. 2DToolkit官方文档中文版打地鼠教程(一):初始设置

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  8. 【AutoMapper官方文档】DTO与Domin Model相互转换(中)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  9. 【AutoMapper官方文档】DTO与Domin Model相互转换(下)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  10. Ionic2系列——Ionic 2 Guide 官方文档中文版

    最近一直没更新博客,业余时间都在翻译Ionic2的文档.之前本来是想写一个入门,后来觉得干脆把官方文档翻译一下算了,因为官方文档就是最好的入门教程.后来越翻译越觉得这个事情确实比较费精力,不知道什么时 ...

随机推荐

  1. 【机器学习】DBSCAN Algorithms基于密度的聚类算法

    一.算法思想: DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法.与划分和层 ...

  2. linux 的内核的作用和功能

    Linux内核[kernel]是整个操作系统的最底层, 它负责整个硬件的驱动,以及提供各种系统所需的核心功能, 包括防火墙机制.是否支持LVM或Quota等文件系统等等, 如果内核不认识某个最新的硬件 ...

  3. RTX基础教程目录

    以下RTX教程转载自安富莱电子论坛: http://forum.armfly.com/forum.php?mod=viewthread&tid=16909&extra=page%3D1 ...

  4. Ubuntu 安装 mysql

    sudo apt-get install mysql-server sudo apt install mysql-client sudo apt install libmysqlclient-dev

  5. java基础篇---网络编程(TCP程序设计)

    TCP程序设计 在Java中使用Socket(即套接字)完成TCP程序的开发,使用此类可以方便的建立可靠地,双向的,持续的,点对点的通讯连接. 在Socket的程序开发中,服务器端使用serverSo ...

  6. WCF终结点——终结点地址(EndpointAddress)

    终结点的地址的Uri属性作为终结点地址的唯一标示. 包括客户端终结点和服务端终结点. 一.服务端终结点: 服务端的终结点通过宿主的添加方法暴露出来,从而成为可以调用的资源. 下面是将服务绑定到宿主的代 ...

  7. android App抓包工具的应用(转)

    安装好 fiddler ,手头有一部Android 手机,同时 还要有无线网,手机和 电脑在同一个无线网络.这些条件具备,我们就可以 开始下面的步骤了. 正题 :Fiddler 主菜单 Tools - ...

  8. Java异常处理之InvocationTargetException(反射异常)

     Java异常处理之InvocationTargetException(反射异常) InvocationTargetException异常由Method.invoke(obj, args...)方法抛 ...

  9. PHP 实战之设计模式:PHP 中的设计模式

    本文主要讨论下Web开发中,准确而言,是PHP开发中的相关的设计模式及其应用.有经验的开发者肯定对于设计模式非常熟悉,但是本文主要是针对那 些初级的开发者.首先我们要搞清楚到底什么是设计模式,设计模式 ...

  10. oracle分页查询原理浅析

    原因一 oracle默认为每个表生成rowmun,rowid字段,这些字段我们称之为伪列 1 创建测试表 CREATE TABLE TEST( ID NUMBER, NAME VARCHAR2(20) ...