我是靠谱客的博主 冷酷芝麻,最近开发中收集的这篇文章主要介绍Java 利用POI操作PPT,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一, 解析PPT文件中的图片

import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.model.Picture;
import org.apache.poi.hslf.usermodel.PictureData;
import org.apache.poi.hslf.usermodel.SlideShow;
public class OutputPicture {
// 图片默认存放路径

public final static String path = "F:\ppt";
public static void main(String[] args) throws Exception {
// 加载PPT
HSLFSlideShow _hslf = new HSLFSlideShow("F:\Downloads\myPPT.ppt");
SlideShow _slideShow = new SlideShow(_hslf);
// 获取PPT文件中的图片数据
PictureData[] _pictures = _slideShow.getPictureData();
// 循环读取图片数据
for (int i = 0; i < _pictures.length; i++) {
StringBuilder fileName = new StringBuilder(path);
PictureData pic_data = _pictures[i];
fileName.append(i);
// 设置格式
switch (pic_data.getType()) {
case Picture.JPEG:
fileName.append(".jpg");
break;
case Picture.PNG:
fileName.append(".png");
break;
default:
fileName.append(".data");
}
// 输出文件
FileOutputStream fileOut = new FileOutputStream(new File(fileName.toString()));
fileOut.write(pic_data.getData());
fileOut.close();
}
}
}

二、在PPT文件中加入外部图片

import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import org.apache.poi.hslf.model.Picture;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.usermodel.SlideShow;
public class InputPicture {
public static String path = "F:\images\myImage.png";
public static String OUTPUT = "F:\ppt\myppt.ppt";
public static void main(String[] args) throws Exception {
if(args.length != 0){
path = args[0];
}
// 构建PPT

SlideShow _slideShow = new SlideShow();
// 创建幻灯片

Slide _slide = _slideShow.createSlide();
// 设置图片类型

int pic_type = -1;
if(path.indexOf(".png") != -1){
pic_type = Picture.PNG;
}else{
pic_type = Picture.JPEG;
}
File file = new File(path);
BufferedImage image = ImageIO.read(file);
// 新置入图片索引位置

int newIndex = _slideShow.addPicture(file, pic_type);
// 根据索引位置 , 创建图片对象

Picture _picture = new Picture(newIndex);
// 设置图片显示位置

_picture.setAnchor(new Rectangle(100,100,image.getWidth(),image.getHeight()));
// 将图片放入幻灯片

_slide.addShape(_picture);
// 输出PPT文件

_slideShow.write(new FileOutputStream(new File(OUTPUT)));
}
}

三、操作文本对象

import java.awt.Color;

import java.awt.Rectangle;

import java.io.FileOutputStream;

import org.apache.poi.hslf.model.AutoShape;

import org.apache.poi.hslf.model.Line;

import org.apache.poi.hslf.model.ShapeTypes;

import org.apache.poi.hslf.model.Slide;

import org.apache.poi.hslf.model.TextBox;

import org.apache.poi.hslf.model.TextRun;

import org.apache.poi.hslf.usermodel.RichTextRun;

import org.apache.poi.hslf.usermodel.SlideShow;

public class InputTextRun {
public static void main(String[] args) throws Exception{
SlideShow _slideShow = new SlideShow();

Slide slide = _slideShow.createSlide();

// 创建并置入简单文本
TextBox _text = new TextBox();

TextRun _textRun = _text.createTextRun();

_textRun.setRawText("杜磊米");

_text.setAnchor(new Rectangle(10,10,100,100));

// 创建并置入带有样式的文本
AutoShape _autoShape = new AutoShape(ShapeTypes.Rectangle); //设置形状

TextRun _autoText = _autoShape.createTextRun();

_autoText.setRawText("杜磊米");

_autoShape.setAnchor(new Rectangle(200,200,100,100));

_autoShape.setFillColor(new Color(170,215,255));

_autoShape.setLineWidth(5.0);

_autoShape.setLineStyle(Line.LINE_DOUBLE);

// AutoShape 对象可以设置多个不同样式文本
TextRun _autoText2 = _autoShape.createTextRun();

RichTextRun _richText = _autoText2.appendText("杜");

_richText.setFontColor(new Color(255,255,255));

RichTextRun _richText2 = _autoText2.appendText("磊米");

_richText2.setFontColor(new Color(255,0,0));

_richText2.setFontSize(12);

// 将文本对象置入幻灯片
slide.addShape(_text);

slide.addShape(_autoShape);

// 输出文件
_slideShow.write(new FileOutputStream("F:\ppt\text.ppt"));

}
}

四、设置各类文件属性

 import java.awt.Dimension;

import java.io.FileOutputStream;

import org.apache.poi.hpsf.DocumentSummaryInformation;

import org.apache.poi.hpsf.SummaryInformation;

import org.apache.poi.hslf.HSLFSlideShow;

import org.apache.poi.hslf.model.Slide;

import org.apache.poi.hslf.usermodel.SlideShow;

public class PPTProperty {
public static void main(String [] args)throws Exception{
HSLFSlideShow hslf = HSLFSlideShow.create();

SlideShow _slideShow = new SlideShow(hslf);

// 设置页面大小
_slideShow.setPageSize(new Dimension(400,600));

// 设置后创建出相应大小的幻灯片
Slide slide = _slideShow.createSlide();

DocumentSummaryInformation doc = hslf.getDocumentSummaryInformation();

SummaryInformation info = hslf.getSummaryInformation();

doc.setCompany("secret");

info.setAuthor("杜磊米");

info.setTitle("nothing");

// 输出文件
_slideShow.write(new FileOutputStream("F:\ppt\demo.ppt"));

// 完成后, 找到文件 , 右键属性查看:)
}
}

最后

以上就是冷酷芝麻为你收集整理的Java 利用POI操作PPT的全部内容,希望文章能够帮你解决Java 利用POI操作PPT所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部