1)如果是创建新的PPT文档,直接使用SlideShow和Slide类就可以,其中SlideShow表示PPT文档,Slide表示某一张幻灯片
如下代码创建空的PPT文档:
SlideShow ppt = new SlideShow();
Slide[] slides = ppt.getSlides();
assertTrue(slides.length == 0);
savePPTFile(ppt);
private void savePPTFile(SlideShow ppt) throws Exception{
FileOutputStream out = new FileOutputStream("ppt测试.ppt");
ppt.write(out);
out.close();
}
2)设置母版,这样后续的新建幻灯片都将使用母版的字体,背景等设置
SlideShow ppt = new SlideShow();
//设置幻灯片大小
ppt.setPageSize(new Dimension(760,600));
SlideMaster master = ppt.getSlidesMasters()[0];
//设置母板背景,支持多种图片格式
int picIndex = ppt.addPicture(new File("background.png"), Picture.PNG);
Picture background = new Picture(picIndex);
//设置图片位置
background.setAnchor(new java.awt.Rectangle(0, 0, ppt.getPageSize().width
, ppt.getPageSize().height));
master.addShape(background);
3)创建幻灯片并插入文本
SlideShow ppt = new SlideShow();
Slide newSlide = ppt.createSlide();
//添加幻灯片标题
TextBox title = newSlide.addTitle();
RichTextRun titleRun = title.getTextRun().getRichTextRuns()[0];
titleRun.setFontColor(Color.RED);
title.setText("ppt测试");
//添加文本框
TextBox txt = new TextBox();
RichTextRun richTextRun = txt.getTextRun().getRichTextRuns()[0];
richTextRun.setFontColor(Color.BLUE);
//setText参数字符串可以包含回车、换行符,但是最后一行不能以\r\n结尾,否则设置的格式没有效果(v3.5)
richTextRun.setText("这里可以换行\r\n第二行文本");
txt.setAnchor(new java.awt.Rectangle(50,150,400,400));
newSlide.addShape(txt);
savePPTFile(ppt);
4)插入图片,支持多种格式
SlideShow ppt = new SlideShow();
Slide newSlide = ppt.createSlide();
int picIndex = ppt.addPicture(new File("图片.jpg"), Picture.JPEG);
Picture jpg = new Picture(picIndex);
//set image position in the slide
jpg.setAnchor(new java.awt.Rectangle(360, 200, 280, 260));
newSlide.addShape(jpg);
savePPTFile(ppt);
5)插入表格(v3.5)
SlideShow ppt = new SlideShow();
Slide slide = ppt.createSlide();
String[][] datas = {
{"序号", "姓名","年龄"},
{"1", "张三","30"},
{"2", "李四","27"},
};
//create a table of 3 rows and 3 columns
Table table = new Table(3, 3);
for (int i = 0; i < datas.length; i++) {
for (int j = 0; j < datas[i].length; j++) {
TableCell cell = table.getCell(i, j);
RichTextRun rt = cell.getTextRun().getRichTextRuns()[0];
rt.setFontName("宋体");
rt.setFontSize(12);
cell.setVerticalAlignment(TextBox.AnchorMiddle);
cell.setHorizontalAlignment(TextBox.AlignCenter);
cell.setText(datas[i][j]);
if(i == 0){//首行背景设置为灰色
cell.setFillColor(Color.GRAY);
}
}
}
Line border = table.createBorder();
border.setLineColor(Color.black);
border.setLineWidth(2.0);
table.setAllBorders(border);
slide.addShape(table);
table.moveTo(160,260);
savePPTFile(ppt);
6)如果是读取已存在的PPT文档则还要用到HSLFSlideShow,下面代码将PPT文件导出为图片(png)格式,如果幻灯片上有中文字符则这些字符的字体需要修改为支持中文的字体(宋体等),否则导出的图片的中文字符不能正常显示
SlideShow ppt = new SlideShow(new HSLFSlideShow("PPT测试.ppt"));
Dimension pgsize = ppt.getPageSize();
Slide[] slide = ppt.getSlides();
for (int i = 0; i < slide.length; i++) {
BufferedImage img = new BufferedImage(pgsize.width, pgsize.height
, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
//clear the drawing area
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
//render
slide[i].draw(graphics);
FileOutputStream out = new FileOutputStream("slide-" + (i+1) + ".png");
javax.imageio.ImageIO.write(img, "png", out);
out.close();
7)提取PPT文档信息
SlideShow ppt = new SlideShow(new HSLFSlideShow("PPT测试.ppt"));
Slide[] slides = ppt.getSlides();
//提取文本信息
for (Slide each : slides) {
System.out.println(each.getTitle()) ;
TextRun[] textRuns = each.getTextRuns();
for (int i=0 ;i< textRuns.length; i++ ) {
System.out.println(textRuns[i].getText());
RichTextRun[] richTextRuns = textRuns[i].getRichTextRuns();
for (int j = 0; j < richTextRuns.length; j++) {
System.out.println(richTextRuns[j].getText());
}
}
}
//提取所有JPEG图片
PictureData[] picDatas = ppt.getPictureData();
for (int i=0;i<picDatas.length;i++) {
if(picDatas[i].getType() == Picture.JPEG){
FileOutputStream out = new FileOutputStream("jpg_" + i + ".jpg");
ppt.write(out);
out.close();
}
}
8)设置PPT文档摘要信息(文档点击鼠标右键查看属性)
HSLFSlideShow hslf = HSLFSlideShow.create();
DocumentSummaryInformation dsi= hslf.getDocumentSummaryInformation();
SummaryInformation si= hslf.getSummaryInformation();
dsi.setCompany("yourCompany");
dsi.setCategory("ppt测试");
si.setAuthor("yourName");
si.setTitle("标题");
SlideShow ppt = new SlideShow(hslf);
savePPTFile(ppt);
分享到:
相关推荐
本文档将介绍如何使用POI操作PPT文档,包括导入、导出、读取、添加、拼接、替换文本、页面排序等操作。 一、POI操作PPT文档的准备工作 在开始操作PPT文档之前,需要下载并安装Apache POI软件包。可以访问Apache ...
使用Java POI创建一个新的PPT文档首先需要引入相关的库,例如`poi-ooxml`和`poi-ooxml-schemas`。通过`XSLFSlideShow`类,我们可以创建一个新的PowerPoint演示文稿实例。例如: ```java XMLSlideShow ppt = new ...
在本示例程序中,我们关注的是如何使用Java和Apache POI库来操作PowerPoint(PPT)文件。POI 提供了丰富的API,使得开发者能够创建、修改、读取和展示PPT文件,而无需依赖Microsoft Office。 首先,我们需要理解...
在这个"poi操作ppt图表史上最完整示例演示.zip"压缩包中,我们主要关注的是如何使用Apache POI库来操作PowerPoint中的图表,包括圆饼图、柱状图、线性图和面积图。这些图表是数据可视化的重要工具,有助于更好地理解...
在这个"poi操作ppt图表.zip"的压缩包中,我们很显然会涉及到如何使用Apache POI库来操作PowerPoint文件中的图表。以下是对这一主题的详细讲解: 首先,Apache POI提供了HSLF(用于低级API,处理老版本的*.ppt文件)...
在本“poi操作ppt生成图表完整工程”中,我们将会深入探讨如何使用Apache POI库来创建和编辑PowerPoint文档中的图表。 首先,我们需要了解Apache POI提供的API。`XSLFSlideShow`是用于创建和修改PowerPoint幻灯片的...
Java中的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,包括PPT(PowerPoint)文档。在这个项目中,我们将会探讨如何使用POI API来生成PPT文件,特别是通过模板的方式。以下是...
Apache POI是一个流行的开源Java库,专门用于读写Microsoft Office格式的文件,包括PPT和PPTX。本篇将详细介绍如何使用Apache POI来处理这两种不同版本的PowerPoint文件。 首先,让我们了解一下Apache POI的基本...
在这个特定的场景中,我们将探讨如何利用POI 3.17版本来操作PowerPoint(PPT)文件,特别是创建饼状图。饼状图是一种常用的可视化工具,用于展示数据中各部分的比例关系。以下是一些关键知识点: 1. **Apache POI ...
在处理各种文档格式时,如PPT(PowerPoint)和PDF(Portable Document Format),Java提供了强大的库,如Apache POI和PDFBox。这两个库分别用于处理Microsoft Office文档和PDF文件。 Apache POI是Java中的一个开源...
标题中的“POI创建PPT文件(有点通用)”指的是使用Apache POI库来创建PowerPoint (PPT) 文件。Apache POI是Java平台上的一个开源项目,它允许开发者读写Microsoft Office格式的文件,包括Word、Excel和PowerPoint。在...
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如DOC、DOCX、PPT、PPTX、XLS和XLSX。它提供了Java API,使得开发者能够读取、创建、修改这些文件。在本场景中,我们将讨论如何使用POI将...
同时,POI库还提供了丰富的API,允许我们对文字、形状、动画等进行更复杂的操作,从而实现自定义的PPT生成功能。 在实际开发中,如果需要自动化处理大量PPT,可以结合其他工具,如Java的多线程技术,来提高处理效率...
首先,Apache POI提供了API,允许开发者以编程方式操作这些文件,例如创建、读取、修改和保存。在处理Word文档时,可以使用HWPF(Hadoop Word Processing Format)和XWPF(XML Word Processing Format)类,分别对应...
描述进一步确认了这一点,说明这个项目能够接受模板,并在模板中填入指定内容,从而创建新的PPT文档。 Apache POI是Apache软件基金会的一个开源项目,它提供了API用于读写Microsoft Office格式的文件,包括Word(....
在IT行业中,尤其是在数据处理和文档管理领域,Apache POI是一个非常重要的库,它允许开发者使用Java处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。本篇将详细讲解如何利用Apache POI将不同类型的...
Java POI 是一个开源项目,由Apache软件基金会维护,它为开发者提供了在Java环境中读取、写入和修改Microsoft Office格式文件...通过深入理解并实践文档中的内容,你将能够熟练地利用Java POI进行各种复杂的文件操作。
3. **打开PPT/PPTX文档**:使用POI提供的API,如`HSLFSlideShow`或`XSLFSlideShow`(对应于老版PPT和新版PPTX)创建一个幻灯片展示对象。 4. **遍历幻灯片**:通过`getSlides()`方法获取幻灯片列表,然后遍历每个...
POI提供了一些优化选项,如使用`POIFSFileSystem`直接操作磁盘上的文件,而不是一次性加载到内存中,以减少内存消耗。 7. **错误处理与兼容性**: POI库对不同版本的Office文件格式有良好的兼容性,但在处理一些复杂...
这个“POI中文帮助文档”提供了全面的指南,帮助开发者理解和使用POI API来处理这些文件类型。 1. **POI基本概念**: - **HSSF**:用于处理Excel的低级别API,主要支持.xls格式的老版Excel文件。 - **XSSF**:...