zoukankan      html  css  js  c++  java
  • java利用poi 把ppt转化为图片,

    导入jar包:

    poi-3.8.jar

    poi-ooxml-3.9.jar

    poi-scratchpad-3.8.jar

    代码:

     1 package test4;
     2 
     3 import java.awt.Dimension;
     4 import java.io.File;
     5 import java.io.FileInputStream;
     6 import java.io.FileNotFoundException;
     7 import java.io.FileOutputStream;
     8 import java.io.IOException;
     9 
    10 import org.apache.poi.hslf.model.TextRun;
    11 import org.apache.poi.hslf.usermodel.RichTextRun;
    12 import org.apache.poi.hslf.usermodel.SlideShow;
    13 
    14 import java.awt.Color;
    15 import java.awt.Graphics2D;
    16 import java.awt.geom.Rectangle2D;
    17 import java.awt.image.BufferedImage;
    18 
    19     public class PptToJpg_poi {
    20         public static void main(String[] args) {
    21             // 读入PPT文件
    22             File file = new File("C:\Users\Administrator\Desktop\pptToJpg\test8.pptx");
    23             doPPTtoImage(file);
    24         }
    25         
    26         public static boolean doPPTtoImage(File file) {
    27             boolean isppt = checkFile(file);
    28             if (!isppt) {
    29                 System.out.println("The image you specify don't exit!");
    30                 return false;
    31             }
    32             try {
    33                 FileInputStream is = new FileInputStream(file);
    34                 SlideShow ppt = new SlideShow(is);
    35                 is.close();
    36                 Dimension pgsize = ppt.getPageSize();
    37                 org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();
    38                 for (int i = 0; i < slide.length; i++) {
    39                     TextRun[] truns = slide[i].getTextRuns();
    40                     for (int k = 0; k < truns.length; k++) {
    41                         RichTextRun[] rtruns = truns[k].getRichTextRuns();
    42                         for (int l = 0; l < rtruns.length; l++) {
    43                             rtruns[l].setFontIndex(1);
    44                             rtruns[l].setFontName("宋体");
    45                         }
    46                     }
    47                     BufferedImage img = new BufferedImage(pgsize.width, pgsize.height,
    48                     BufferedImage.TYPE_INT_RGB);
    49                     Graphics2D graphics = img.createGraphics();
    50                     graphics.setPaint(Color.BLUE);
    51                     graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
    52                     slide[i].draw(graphics);
    53                     // 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径
    54                     File path = new File("C:/Users/Administrator/Desktop/pptToJpg/images");
    55                     if (!path.exists()) {
    56                         path.mkdir();
    57                     }
    58                     // 可测试多种图片格式
    59 //                    FileOutputStream out = new FileOutputStream(path + "/" + (i + 1) + ".jpg");
    60 //                    javax.imageio.ImageIO.write(img, "jpeg", out);
    61                     FileOutputStream out = new FileOutputStream(path + "/" + (i + 1) + ".jpg");
    62                     javax.imageio.ImageIO.write(img, "png", out);
    63                     out.close();
    64                 }
    65                 System.out.println("success!!");
    66                 return true;
    67             } catch (FileNotFoundException e) {
    68                 System.out.println(e);
    69             } catch (IOException e) {
    70                 
    71             }
    72             return false;
    73         }
    74         
    75         // function 检查文件是否为PPT
    76         public static boolean checkFile(File file) {
    77             boolean isppt = false;
    78             String filename = file.getName();
    79             String suffixname = null;
    80             if (filename != null && filename.indexOf(".") != -1) {
    81                 suffixname = filename.substring(filename.lastIndexOf("."));
    82                 if (suffixname.equals(".ppt") || suffixname.equals(".pptx")) {
    83                     isppt = true;
    84                 }
    85                 return isppt;
    86             } else {
    87                 return isppt;
    88             }
    89         }
    90         
    91 }

    亲测有效

  • 相关阅读:
    asList和subList的缺陷
    oracle和mysql的拼接查询
    Google Guava的splitter用法
    docker创建mongodb并且测试代码
    GitHub 近两万Star,无需编码,可一键生成前后端代码,这个开源项目JeecgBoot有点强
    在深圳养一个娃需要多少钱?2020深圳养娃开销(Excel文本)清单公布!家长直呼扎心了!
    Win7安装AD域管理工具-Win7安装AD域远程服务器管理工具
    盘点2020年那些大厂网盘小厂网盘其他网络存储设备
    完美解决远程计算机需要网络级别身份验证RDO
    OPPO手机的指令合集(工程模式、串号等)
  • 原文地址:https://www.cnblogs.com/haw2106/p/9083199.html
Copyright © 2011-2022 走看看