欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 利用POI操作PPT

程序员文章站 2022-07-13 12:26:30
...
                     

一, 解析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();               }           }       }   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

二、在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)));           }       }   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

三、操作文本对象

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"));                 }             }   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

四、设置各类文件属性

 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"));               // 完成后, 找到文件 , 右键属性查看:)           }       }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32