java poi 解析为图片
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.8</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.8</version>
</dependency>
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.imageio.ImageIO;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFShape;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFTextParagraph;
import org.apache.poi.xslf.usermodel.XSLFTextRun;
import org.apache.poi.xslf.usermodel.XSLFTextShape;
import com.ylw.entity.wanlixing.ActWanlixingProjectImage;
/**
* PPT解析成图片保存
* @param projectId
* @param occFile
*/
private void uploadPPTImage(Integer projectId,String occFile) {
List<String> images = new ConverterPPT2Image().convertPPTs(occFile);
ActWanlixingProjectImage projectImage = null;
List<ActWanlixingProjectImage> projectImageList = new ArrayList<ActWanlixingProjectImage>();
for(String str:images){
if(str.split("#").length>1){
projectImage = new ActWanlixingProjectImage();
projectImage.setProjectId(projectId);
projectImage.setImagePath(str.split("#")[0]);
if(TextUtil.isNumeric1(str.split("#")[1])){
projectImage.setSorting(Integer.parseInt(str.split("#")[1]));
}
projectImage.setImageType(3);
projectImage.setCreateTime(DateConvertUtils.getNow());
projectImageList.add(projectImage);
}
}
actWanlixingProjectImageService.save(projectImageList);
}
public class ConverterPPT2Image{
public final int DEFAULT_WIDTH = 800;
public final int DEFAULT_HEIGHT = 600;
private String srcPath;
private int index;
private Dimension pgsize;
private BufferedImage img;
private List<String> images = new ArrayList<String>();
public List<String> convertPPTs(String occFile){
try {
File tmpFold = new File(Constants.ANLIXING_PPT_SAVE_PATH);
if(!tmpFold.exists()){
tmpFold.mkdirs();
}
new AliyunUploadUtil().download(occFile, Constants.ANLIXING_PPT_SAVE_PATH+occFile);
srcPath=Constants.ANLIXING_PPT_SAVE_PATH+occFile;
String ext = getExtension(occFile);
if (".pptx".equalsIgnoreCase(ext)) {
convertPPTX(Constants.ANLIXING_PPT_SAVE_PATH+occFile);
} else if (".ppt".equalsIgnoreCase(ext)) {
convertPPT(Constants.ANLIXING_PPT_SAVE_PATH+occFile);
}
File file = new File(Constants.ANLIXING_PPT_SAVE_PATH+occFile);
if(file!=null){
file.delete();
}
return images;
} catch (Exception e) {
e.printStackTrace();
};
return new ArrayList<String>();
}
private void convertPPT(String path) throws IOException {
FileInputStream is = new FileInputStream(srcPath);
SlideShow ppt = new SlideShow(is);
is.close();
pgsize = ppt.getPageSize();
Slide[] slide = ppt.getSlides();
for (index = 0; index < slide.length; index++) {
setFont(slide[index]);
Graphics2D graphics = createGraphics2D();
slide[index].draw(graphics);
String imagePath = saveImage(Constants.ANLIXING_PPT_SAVE_PATH + "brif_" + new Random().nextInt() + ".jpg");
img = null;
images.add(imagePath+"#"+index);
}
}
private void setFont(Slide slide) {
TextRun[] truns = slide.getTextRuns();
for (TextRun trun : truns) {
RichTextRun[] rtruns = trun.getRichTextRuns();
for (RichTextRun rtrun : rtruns) {
rtrun.setFontIndex(1);
rtrun.setFontName("宋体");
}
}
}
private String saveImage(String pngPatch) throws IOException {
Image smallImg = img.getScaledInstance(DEFAULT_WIDTH, DEFAULT_HEIGHT, Image.SCALE_SMOOTH);
img = new BufferedImage(DEFAULT_WIDTH, DEFAULT_HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics2D g = img.createGraphics();
g.drawImage(smallImg, 0, 0, null);
g.dispose();
OutputStream out = new FileOutputStream(pngPatch);
ImageIO.write(img, "jpg", out);
out.close();
//图片上传到阿里云
File file = new File(pngPatch);
String imagePath =null;
if(file!=null){
imagePath = AliyunUploadUtil.uploadPPTImage(file, Constants.ALIYUN_WANLIXING_SAVE_PATH);
//删除垃圾数据
file.delete();
}
return imagePath;
}
private Graphics2D createGraphics2D() {
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));
return graphics;
}
private void convertPPTX(String path) throws IOException {
FileInputStream is = new FileInputStream(srcPath);
XMLSlideShow ppt = new XMLSlideShow(is);
is.close();
pgsize = ppt.getPageSize();
XSLFSlide[] slide = ppt.getSlides();
for (index = 0; index < slide.length; index++) {
Graphics2D graphics = createGraphics2D();
setFont(slide[index]);
slide[index].draw(graphics);
String imagePath = saveImage(Constants.ANLIXING_PPT_SAVE_PATH + "brif_" + new Random().nextInt() + ".jpg");
img = null;
images.add(imagePath+"#"+index);
}
}
private void setFont(XSLFSlide slide) {
for (XSLFShape shape : slide.getShapes()) {
if (shape instanceof XSLFTextShape) {
for (XSLFTextParagraph paragraph : ((XSLFTextShape) shape)) {
List<XSLFTextRun> truns = paragraph.getTextRuns();
for (XSLFTextRun trun : truns) {
trun.setFontFamily("宋体");
}
}
}
}
}
public int getIndex() {
return index;
}
public static String getExtension(String fileName) {
int pos = fileName.lastIndexOf(".");
if (pos >= 0) {
return fileName.substring(pos);
} else {
return "";
}
}
}
java poi 解析为图片相关推荐
- Java Poi word 插入图片并添加边框
Java Poi word 插入图片并添加边框 //得到Picture的Base64编码 Base64Picture p1; //打开Word文件 Resource resource = new Cl ...
- 关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并)
关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并) 首先,关于poi解析表格先阅读一篇他人的博客 使用poi读取word2007(.docx)中的复杂表格 ...
- Java POI解析Word提取数据存储在Excel
JavaPOI解析word提取数据到excel 一.了解POI POI以前有了解,这次需求是解析word读取其中标题,还有内容赛选获取自己想要的内容 经过两天的学习,开始熟悉Java这么读取word和 ...
- java中输出拼json,java poi 解析excel 输出json 并且拼接字符串显示到jsp
##js代码 $(function() { $("#file_form").submit( function() { //首先验证文件格式 var fileName = $('#f ...
- java poi解析excel_Java 利用POI 解析Excel
引入的依赖 org.apache.poi poi 3.16 org.apache.poi poi-ooxml 3.16 简单说明 主要有四个属性,Workbook(工作表),Sheet(表单),Row ...
- java poi 读取 word图片_Java Poi 根据文字内容 插入 word 图片-Go语言中文社区
需求描述 如下图,我需要在word里根据一个图片的名字,将名字替换成该图片(公章) 思路: 用POI遍历每一个表格里的每一行的每一个单元格,如果遇到我自己定义的"&章",则 ...
- java poi 读取excel 图片_Poi读取excel插图的方法和操作步骤
我们在使用Excel制作表格的时候,有时会使用"Poi读取excel插图",但是很多初学者都不懂也不会制作.下面,我就给大家讲一下"Poi读取excel插图"的 ...
- 使用java poi解析表格
@Testpublic void poi() throws Exception {InputStream inputStream=new FileInputStream("C:\\Users ...
- java poi 解析et,POI操作WPS表格
原文网址: http://www.doczj.com/doc/c7dacf4dc850ad02de804186.html/thread-22004642-1-1.html Wps二次开发--POI入门 ...
最新文章
- 从0到1构建数据科学竞赛知识体系,有夕,鱼佬,茂霖等竞赛大咖将特邀分享...
- 吐槽 | 聊一聊公众号的那些事
- Bagging和Boosting 概念及区别
- 一行Java代码实现将数组转成List
- 【转】PowerShell入门(五):Cmd命令与PowerShell命令的交互
- 反射获取list泛型_Android 从浅到懂使用反射机制
- gcc support java_由于CC寻找不存在的gcc版本,自制软件无法安装公式
- Java系统中如何拆分同步和异步
- python判断GET和POST有没有某个参数
- 锐捷 linux共享wifi,电脑共享wifi都弱爆了,无线路由器直接共享锐捷
- VBA代码助手专业版功能概览
- java导出带图片excel
- plotyy函数_MATLAB学习笔记 plotyy函数 | 学步园
- awvs安装|User acunetix already exist. Home directory for user acunetix not found.
- 自己的第一个windows程序
- 【MySQL】数据库中的三大范式
- Python,爬取电影天堂,你觉得怎么样?
- 选择正确的域名和空间/服务器
- 计算机word软件学后的总结,计算机office教学总结范文
- Elasticsearch分布式搜索笔记