原文链接点击打开链接

推荐一篇很好的Apache POI文章:使用POI操作PPT文档
本代码的大部分内容参考自这里。
改进:多渲染了ppt背景颜色和ppt背景图片。
有时候,不得不承认。。。Java在做应用上还是很好的,可用的库太多了。
另:貌似ppt比pdf好解析多了,不知道ppt格式M$有没有申请专利,反正pptx已经能解析了。

package extract;import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream;import org.apache.poi.hslf.HSLFSlideShow; import org.apache.poi.hslf.model.Slide; import org.apache.poi.hslf.usermodel.SlideShow;import util.Const;import bean.PPTBean;/** * 将每个slide转化成png格式加以保存 * * @author liheyuan * */ public class SaveSlideAsPNG {/** * 将一个ppt的所有slide转化为png,存储 * * @param ss * @param bean */ public static void convertAllSlides(HSLFSlideShow ss, PPTBean bean) { SlideShow ppt = new SlideShow(ss); Dimension pgsize = ppt.getPageSize(); Slide[] slide = ppt.getSlides();// 存放png的根目录 String dir_root = Const.SLIDE_PNG_DIR + "/" + bean.getPptID() + "/"; File file = new File(dir_root); file.mkdirs();for (int i = 0; i < slide.length; i++) { BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = img.createGraphics(); // clear the drawing area int backgroundColor = slide[i].getColorScheme() .getBackgroundColourRGB(); graphics.setPaint(new Color(backgroundColor)); graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));// render the background slide[i].getBackground().draw(graphics); // render the content slide[i].draw(graphics);String filename = dir_root + (i + 1) + ".png";FileOutputStream out = null; try { out = new FileOutputStream(filename); javax.imageio.ImageIO.write(img, "png", out); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { out.close(); } catch (Exception e) { // Nothing } } } } }
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

package extract;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.usermodel.SlideShow;
import util.Const;
import bean.PPTBean;
/**
* 将每个slide转化成png格式加以保存
*
* @author liheyuan
*
*/
public class SaveSlideAsPNG {
/**
* 将一个ppt的所有slide转化为png,存储
*
* @param ss
* @param bean
*/
public static void convertAllSlides(HSLFSlideShow ss, PPTBean bean) {
SlideShow ppt = new SlideShow(ss);
Dimension pgsize = ppt.getPageSize();
Slide[] slide = ppt.getSlides();
// 存放png的根目录
String dir_root = Const.SLIDE_PNG_DIR + "/" + bean.getPptID() + "/";
File file = new File(dir_root);
file.mkdirs();
for (int i = 0; i < slide.length; i++) {
BufferedImage img = new BufferedImage(pgsize.width, pgsize.height,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
// clear the drawing area
int backgroundColor = slide[i].getColorScheme()
.getBackgroundColourRGB();
graphics.setPaint(new Color(backgroundColor));
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width,
pgsize.height));
// render the background
slide[i].getBackground().draw(graphics);
// render the content
slide[i].draw(graphics);
String filename = dir_root + (i + 1) + ".png";
FileOutputStream out = null;
try {
out = new FileOutputStream(filename);
javax.imageio.ImageIO.write(img, "png", out);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
out.close();
} catch (Exception e) {
// Nothing
}
}
}
}
}

使用Apache POI将ppt截屏成png格式(+背景和图片)相关推荐

  1. PPT文件转换成PDF格式

    将PPT转换成PDF格式,这样可以避免做好的PPT被随意改动,只需要在PPT里面操作就可以了,具体方法如下: 打开PPT,点击[文件]列表里的[导出],再点击右侧[创建PDF/XPS文档] 随后,会出 ...

  2. 将PPT文件转换成HTML格式

    /// <summary>         /// 将PPT文件转换成HTML格式         /// </summary>         /// <param   ...

  3. 两种将ppt文件转换成pdf格式的方法

    对于常接触办公文档的童鞋们来说,应该对pdf文件并不陌生吧,pdf具有跨平台.稳定性.安全性阅读良好等优势,正因为如此,许多企业将pdf作为一种重要的文档因为工作需求常常需要将编辑好的ppt转换成pd ...

  4. Apache POI转ppt为图片

    最近项目中需要将ppt转成图片, 调研了一下. 发现apache poi可以实现. Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Jav ...

  5. Caseformer talk PPT截屏

    诸神缄默不语-个人CSDN博文目录 看到这个录屏: 面向司法场景的预训练模型构建_哔哩哔哩_bilibili 没有声音只有slides,所以干脆截屏了.感觉光看slides能勉强猜一下主讲人想表达什么 ...

  6. PPT如何转换成PDF格式

    PPT是工作中经常用来做演示的办公软件,有时候PPT做好后,我们都不希望被别随意修改,那将PPT转换成PDF格式后,再发送给别人就是一种很好的方法了. 如何将PPT转换成PDF格式呢?只需要在PPT里 ...

  7. ppt可以转换成HTML格式吗,极强PDF转换器如何将ppt转换成html网页格式

    极强PDF转换器如何将ppt转换成html网页格式?想要转换文件其实很简单,小编告诉大家一个用专业的极强PDF转换器软件将PPT转换成HTML网页格式的方法,下面小编就来教大家如何将PPT幻灯片转换成 ...

  8. 如何把PPT幻灯片转换成PDF格式

    倘若你的手上有一份ppt演示文本,想抽取若干页面为pdf格式文本,最方便的要数迅捷在线ppt转换成pdf转换器,选择软件上方的"ppt转pdf"文件模式,并在"选择文件& ...

  9. 图片怎么转换成pdf格式?其实图片转换为pdf很简单

    图片怎么转换成pdf格式?pdf作为我们日常生活中十分常见的一种格式之一,和我们的生活息息相关,我们在日常生活中无时无刻不在接触pdf格式.除了word文档转换为pdf文件之外,其实图片也是可以存放在 ...

最新文章

  1. redux 局部刷新_如何使用Redux Observables和刷新令牌API获取新的访问令牌
  2. python 程序流程控制结构-【笔记】《python语言程序设计》——程序的控制结构...
  3. anaconda在ubuntu中添加环境变量
  4. 设计模式的功力长了!
  5. vscode emmet默认模板_从零开始配置 vscode
  6. Confluence wiki上传文件时报“不能上传文件至Confluence中,服务器可能已失效”
  7. 第五章——Pytorch中常用的工具
  8. 总结: 《jQuery基础教程》 1-4章
  9. 官网下载mysql安装包
  10. 简析:世博会燃印刷业激情
  11. Deadlock found when trying to get lock; try restarting transaction 【MySQL死锁问题解决】
  12. 关于低版本IE浏览器无法显示图片的问题
  13. Android事件传递
  14. 二分法和黄金分割法的区别和联系,附Python代码
  15. 微信计算机控制技术试卷,微型计算机控制技术试卷答案A.doc
  16. vs2013 分析 profiler 导致电脑重启
  17. mysql 建表最佳实践
  18. 在vue3setup语法糖中获取DOM元素
  19. 服务器之间的无线通讯,无线通讯技术之间的比较 - 常见无线通信(数据)传输技术 你知道哪些...
  20. 【sbt】sbt package与sbt assembly

热门文章

  1. mysql pid文件太大_mariadb /mysql表文件太大导致的数据库启动不了 | Think in Drupal
  2. shell个性化配置+vim简单配置
  3. 【愚公系列】2023年06月 网络安全(交通银行杯)-数据包分析
  4. 【20220331】自动回复微信机器人——基于pyautogui,取消OCR功能,调用中文预训练模型API
  5. android m4a播放器下载,Android 上传m4a格式音频 本地文件和从服务器下载的文件有差异 一般会有哪些因素导致?...
  6. 利用gym训练自己的动力学模型
  7. bios sgx需要开启吗_BIOS中设置内存的XMP模式有什么用?
  8. 【ROS实践入门(六)消息msg和服务srv文件创建与使用】
  9. 5G无线技术(笔记)
  10. iOS_显示图片原本颜色