JAVA项目测试 ppt_POI开源项目-PPT2PNG转换测试

1 packageedu.office;2

3 importjava.awt.Color;4 importjava.awt.Dimension;5 importjava.awt.Graphics2D;6 importjava.awt.RenderingHints;7 importjava.awt.geom.Rectangle2D;8 importjava.awt.image.BufferedImage;9 importjava.io.File;10 importjava.io.FileInputStream;11 importjava.io.FileNotFoundException;12 importjava.io.FileOutputStream;13 importjava.io.IOException;14 importjava.util.ArrayList;15 importjava.util.List;16

17 importjavax.imageio.ImageIO;18

19 importorg.apache.poi.hslf.model.Slide;20 importorg.apache.poi.hslf.usermodel.SlideShow;21

22 public classPPTReader{23

24 //ppt输入文件路径

25 privateString ppt_file_path;26 //ppt2png保存png图片的路径

27 privateString output_path;28 //scale是图片是原来的size几倍

29 private int scale = 1;30

31 publicString getPpt_file_path() {32 returnppt_file_path;33 }34 public voidsetPPT_file_path(String ppt_file_path) {35 this.ppt_file_path =ppt_file_path;36 }37 public intgetScale() {38 returnscale;39 }40 public void setScale(intscale) {41 this.scale =scale;42 }43 publicString getOutput_path() {44 returnoutput_path;45 }46 public voidsetOutput_path(String output_path) {47 this.output_path =output_path;48 }49

50 /**ppt转png51 *52 *@returnnull 失败 list 图片名称列表53 * **/

54 public Listppt2png(){55 //int slidenum = 2;

56 List images = new ArrayList();57 try{58 FileInputStream is;59 is = newFileInputStream(ppt_file_path);60 SlideShow ppt = newSlideShow(is);61 is.close();62

63 Dimension pgsize =ppt.getPageSize();64

65 int width = (int)(pgsize.width*scale);66 int height = (int)(pgsize.height*scale);67

68 Slide[] slide =ppt.getSlides();69 for (int i = 0; i < slide.length; i++) {70

71 //if (slidenum != -1 && slidenum != (i+1)) continue;72 //获取每页ppt标题

73 String title =slide[i].getTitle();74 //System.out.println("Rendering slide "+slide[i].getSlideNumber() + (title == null ? "" : ": " + title));

75

76 BufferedImage img = newBufferedImage(width, height, BufferedImage.TYPE_INT_RGB);77 Graphics2D graphics =img.createGraphics();78 graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);79 graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);80 graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);81 graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);82

83 graphics.setPaint(Color.white);84 graphics.fill(new Rectangle2D.Float(0, 0, width, height));85

86 graphics.scale((double)width/pgsize.width, (double)height/pgsize.height);87

88 slide[i].draw(graphics);89 //对每一张图片进行命名

90 String fname = output_path + "ppt-" + (i+1) + ".png";91 images.add("ppt-" + (i+1) + ".png");92 File file = newFile(output_path);93 if(!file.exists()){94 file.mkdirs();95 }96 FileOutputStream out = newFileOutputStream(fname);97 ImageIO.write(img, "png", out);98 out.close();99 }100 returnimages;101 } catch(FileNotFoundException e) {102 e.printStackTrace();103 } catch(IOException e) {104 e.printStackTrace();105 }106 return null;107 }108 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值