博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java转换ppt,ppt转成图片,获取备注,获取文本
阅读量:7141 次
发布时间:2019-06-28

本文共 2886 字,大约阅读时间需要 9 分钟。

java转换ppt,ppt转成图片,获取备注,获取文本

ppt获取备注代码:    

if(slide[i].getNotesSheet()!=null&&slide[i].getNotesSheet().getTextRuns()!=null){

     //获取第一个备注
     System.out.println("备注:" + slide[i].getNotesSheet().getTextRuns()[0].getText());
}

ppt获取每页的文本信息列表:

// 获取文本列表

  System.out.println(rtruns[l].getText());  

所有的详细代码如下:

import java.awt.Dimension;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import java.awt.Color;

import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;

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

import org.apache.poi.hslf.record.Slide;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.usermodel.SlideShow;

public class PPTtoImage {

 public static void main(String[] args) {
  // 读入PPT文件
  File file = new File("F:/20110618.ppt");
  doPPTtoImage(file);
 }

 public static boolean doPPTtoImage(File file) {

  boolean isppt = checkFile(file);
  if (!isppt) {
   System.out.println("你指定的文件不是ppt文档!");
   return false;
  }
  try {

   FileInputStream is = new FileInputStream(file);

   SlideShow ppt = new SlideShow(is);
   is.close();
   Dimension pgsize = ppt.getPageSize();
   org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();
   for (int i = 0; i < slide.length; i++) {
    System.out.print("第" + i + "页。");
    if(slide[i].getNotesSheet()!=null&&slide[i].getNotesSheet().getTextRuns()!=null){
     //获取第一个备注
     System.out.println("备注:" + slide[i].getNotesSheet().getTextRuns()[0].getText());
    }
    TextRun[] truns = slide[i].getTextRuns();
    for (int k = 0; k < truns.length; k++) {
     RichTextRun[] rtruns = truns[k].getRichTextRuns();
     for (int l = 0; l < rtruns.length; l++) {
      rtruns[l].setFontIndex(1);
      rtruns[l].setFontName("宋体");
      // 获取文本列表
      System.out.println(rtruns[l].getText());   
     }
    }
    BufferedImage img = new BufferedImage(pgsize.width,
      pgsize.height, BufferedImage.TYPE_INT_RGB);
    Graphics2D graphics = img.createGraphics();
    graphics.setPaint(Color.white);
    graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width,
      pgsize.height));
    slide[i].draw(graphics);
    // 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径
    FileOutputStream out = new FileOutputStream("F:/test/pict_"
      + (i + 1) + ".jpeg");
    javax.imageio.ImageIO.write(img, "jpeg", out);
    out.close();
   }
   System.out.println("ok");
   return true;
  } catch (FileNotFoundException e) {
   System.out.println(e);
  } catch (IOException e) {
   e.printStackTrace();
  }
  return false;
 }

 // function 检查文件是否为PPT

 public static boolean checkFile(File file) {
  boolean isppt = false;
  String filename = file.getName();
  String suffixname = null;
  if (filename != null && filename.indexOf(".") != -1) {
   suffixname = filename.substring(filename.indexOf("."));
   if (suffixname.equals(".ppt")) {
    isppt = true;
   }
   return isppt;
  } else {
   return isppt;
  }
 }
}

 

 

      本文转自yjflinchong 51CTO博客,原文链接:http://blog.51cto.com/yjflinchong/1165109,如需转载请自行联系原作者

你可能感兴趣的文章
BZOJ 1196 二分答案+并查集
查看>>
c#异步编程一
查看>>
离家出走
查看>>
pycharm-django(创建表,对表的操作)
查看>>
css美化checkbox的样式
查看>>
【我的Android进阶之旅】解决MediaPlayer播放音乐的时候报错: Should have subtitle controller already set...
查看>>
Git学习-->GitLab如何屏蔽掉注册功能?
查看>>
Springboot mybatis generate 自动生成实体类和Mapper
查看>>
Idea Live Templates
查看>>
Ajax_实现动态网站的技术、php语法、php接口、前端渲染和后端渲染
查看>>
第一周
查看>>
Algs4-1.3.28用递归的方法解答上一道练习
查看>>
基于Wisense平台创建的某公司财务审批系统分析
查看>>
继承与钻石继承
查看>>
flask的g对象
查看>>
request payload
查看>>
linq To Xml 用法简介
查看>>
堆排序(用了好多的位运算)
查看>>
Django与Ajax
查看>>
Linux块设备IO子系统(二) _页高速缓存
查看>>