PPT、PDF转图片
PPT、PDF转图片
- xml依赖
- pdf转图片
- ppt转图片
xml依赖
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><dependency><groupId>com.github.livesense</groupId><artifactId>jodconverter-core</artifactId><version>1.0.5</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.9</version></dependency><dependency><groupId>com.sleepycat</groupId><artifactId>je</artifactId><version>5.0.73</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.6</version></dependency><dependency><groupId>org.apache.xmlgraphics</groupId><artifactId>batik-bridge</artifactId><version>1.14</version></dependency>
pdf转图片
dpi越大占用内存越大,转换时间越长,显示效果越来好,dpi越小内存占用越小,转换时间越短,显示效果越小。会出现效果文字缺失掉的情况。
long time = System.currentTimeMillis();String sourceDir = "E:\\测试文件\\1(2).pdf"; // PDF文件位置String destinationDir = "E:\\ppt\\"; // 图像文件保存文件夹int dpi = 100; // DPI设置File file = new File(sourceDir);PDDocument document = PDDocument.load(file);PDFRenderer renderer = new PDFRenderer(document);int pageCount = document.getNumberOfPages();// 遍历PDF中的所有页面,并将其转换为图像for (int i = 0; i < pageCount; i++) {System.out.println(i);BufferedImage bim = renderer.renderImageWithDPI(i, dpi);
// BufferedImage image = renderer.renderImage(i, 2.5f);// 将图像保存为PNG文件String fileName = destinationDir + "page-" + (i + 1) + ".jpg";ImageIO.write(bim, "jpg", new File(fileName));}long time1 = System.currentTimeMillis();System.out.println((time1 - time) / 1000);document.close();
ppt转图片
如果使用源文件的文件大小做为长度和宽度的话就会使文件模糊,可以将长和宽*一个整数将她扩大。
坑点这个方法会使一部分的字体变成乱码和样式发生改变这个技术是没有办法避免的,可以将ppt转成pdf在进行转图片
import org.apache.poi.hslf.usermodel.*;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xslf.usermodel.*;import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.ArrayList;
import java.util.List;public class PPT2ImgTest {public static void main(String[] args) throws FileNotFoundException {PPT2ImgTest.PPTtoImage("C:\\Users\\dell\\Desktop\\zppt11092.pptx", "zppt11092.pptx");}public static List<String> PPTtoImage(String file, String fileName) throws FileNotFoundException {FileInputStream fileInputStream = new FileInputStream(file);try {if (fileName.endsWith(".pptx") || fileName.endsWith(".PPTX")) {return pptx2Image(fileInputStream,fileName);} else {return ppt2Image(fileInputStream,fileName);}} catch (Exception e) {e.printStackTrace();}return null;}/*** 将pptx转成图片*/public static List<String> pptx2Image(FileInputStream fileInputStream, String fileName) throws Exception {// 获取系统可用字体
// FileInputStream is = new FileInputStream(filePath + fileName);XMLSlideShow ppt = new XMLSlideShow(fileInputStream);Dimension pgSize = ppt.getPageSize();int pageSize = ppt.getSlides().size();System.out.println("ppt 总页数:{}, 尺寸: width={},height={}"+ pageSize + pgSize.width + pgSize.height);List<String> imgFiles = new ArrayList<>();for (int i = 0; i < pageSize; i++) {//防止中文乱码handlerPPTXEncoding(ppt, i);BufferedImage img = new BufferedImage(pgSize.width, pgSize.height, BufferedImage.TYPE_INT_RGB);Graphics2D graphics = img.createGraphics();// clear the drawing areagraphics.setPaint(Color.white);graphics.fill(new Rectangle2D.Float(0, 0, pgSize.width, pgSize.height));// renderppt.getSlides().get(i).draw(graphics);// save the outputString pptName = fileName.substring(0, fileName.lastIndexOf("."));
// String newImgPath = "/home/digitalData/imgPPT/"+pptName+"/";String newImgPath = "C:\\Users\\dell\\Desktop\\pptImage\\";File imgPath = new File(newImgPath);if (imgPath.exists()) {//图片目录存在则删除imgPath.delete();}imgPath.mkdirs();String file = newImgPath+pptName+ (i + 1) + ".png";imgFiles.add(file);FileOutputStream out = new FileOutputStream(file);javax.imageio.ImageIO.write(img, "png", out);IOUtils.closeQuietly(out);}IOUtils.closeQuietly(fileInputStream);return imgFiles;}/*** 将ppt转成图片,保存在同一目录的image目录下** @param fileName ppt 文件名*/public static List<String> ppt2Image(FileInputStream fileInputStream, String fileName) throws IOException {// 获取系统可用字体HSLFSlideShow ppt = new HSLFSlideShow(fileInputStream);Dimension pgSize = ppt.getPageSize();List<String> imgFiles = new ArrayList<>();for (int i = 0; i < ppt.getSlides().size(); i++) {// 防止中文乱码handlerPPTEncoding(ppt, i);BufferedImage img = new BufferedImage(pgSize.width, pgSize.height, BufferedImage.TYPE_INT_RGB);Graphics2D graphics = img.createGraphics();// clear the drawing areagraphics.setPaint(Color.white);graphics.fill(new Rectangle2D.Float(0, 0, pgSize.width, pgSize.height));// renderppt.getSlides().get(i).draw(graphics);// save the outputString pptName = fileName.substring(0, fileName.lastIndexOf("."));String newImgPath = "/home/digitalData/imgP/"+pptName+"/";File imgPath = new File(newImgPath);if (imgPath.exists()) {//图片目录存在则删除imgPath.delete();}imgPath.mkdirs();String file = newImgPath + (i + 1) + ".png";imgFiles.add(file);FileOutputStream out = new FileOutputStream(file);javax.imageio.ImageIO.write(img, "png", out);IOUtils.closeQuietly(out);// resizeImage(filename, filename, width, height);}return imgFiles;}private static void handlerPPTEncoding(HSLFSlideShow ppt, int index) {for (HSLFShape shape : ppt.getSlides().get(index).getShapes()) {if (shape instanceof HSLFTextShape) {HSLFTextShape tsh = (HSLFTextShape) shape;for (HSLFTextParagraph p : tsh) {for (HSLFTextRun r : p) {String fontFamily = "宋体";r.setFontFamily(fontFamily);}}}}}private static void handlerPPTXEncoding(XMLSlideShow ppt, int index) {for (XSLFShape shape : ppt.getSlides().get(index).getShapes()) {if (shape instanceof XSLFTextShape) {XSLFTextShape tsh = (XSLFTextShape) shape;for (XSLFTextParagraph p : tsh) {for (XSLFTextRun r : p) {String fontFamily = r.getFontFamily();fontFamily = "宋体";r.setFontFamily(fontFamily);}}}}}
}
PPT、PDF转图片相关推荐
- 【初识python 3】PPT PDF 转图片优化告一段落
序言 不想起标题,将就看吧 ^ _ ^ 看此片文章之前请先阅读 [初识python 1]Python PPT PDF 转成图片 [初识python 2]对服务端发送PDF EXCEL文件URL转成图片 ...
- PHP word ppt pdf 转图片
一.window安装步骤(转载:https://www.cnblogs.com/jinxiblog/p/8053008.html) 个人操作步骤补充: 1.先下载php_imagick扩展,拷贝待ph ...
- Word/PPT/PDF怎么免费转为JPG图片?
很多小伙伴接到要将Word/PPT/PDF转为图片的任务,但一般的软件都要收费,那有没有永久免费的软件?又该如何操作呢? 1.打开金鸣表格文字识别网站. 2.点击导航条上的"软件下载&quo ...
- java ppt 转图片格式_Java PPT(X)转图片、PDF和SVG
(一)简介: 工作中,PowerPoint文档有时需要被转换为PDF/图像文件来存档.因为PDF或图片的页面布局是固定的,很难被修改且能被大多数设备打开,所以PDF或者图片比起PowerPoint格式 ...
- Python从Word/PPT/PDF中抽取图片
Python从Word/PPT/PDF中抽取图片 PS 1:也是从网上各个帖子中学习的代码,因此代码的格式以及内容有粘贴网上其他大神的代码,如有侵权请告知删除 2:本次设计意在用pyinstaller ...
- 【超实用】python批量ppt转图片,pdf转图片,word转图片脚本,直接拿去用
前言 某天我们运营在编辑后台的时候说每次上传ppt,pdf,word时都要把每个文件先导出一次图片,然后一个一个上传(png用作预览,ppt,pdf,word源文件不能直接下载的,要付费),说效率太低 ...
- Java实现word、excel、ppt转pdf文件,pdf转图片(无水印)
在网上也是找了好久才找到的一些比较好的资料,我自己总结梳理了一下,方便后面各位小伙伴使用. 1.效果图 所需的架包百度网盘: 百度链接https://pan.baidu.com/s/1oGsL7hSo ...
- 预览word,excel,ppt,pdf、图片————使用vue实现
预览word,excel,ppt,pdf.图片----使用vue实现 需要下载的依赖: template模板实现: 方法的实现: 需要下载的依赖: npm i xlsx // 预览excel插件 np ...
- Java:PPT(X)转图片、PDF和SVG
(一) 简介: 工作中,PowerPoint文档有时需要被转换为PDF/图像文件来存档.因为PDF或图片的页面布局是固定的,很难被修改且能被大多数设备打开,所以PDF或者图片比起PowerPoint格 ...
最新文章
- 连接失败_iG.Firefox连接失败?iG新赛季仍未敲定主教练人选
- 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解
- C#:泛型(Generic)
- 基于winpcap的网络数据包的捕获与分析
- python基础知识-Python基础知识
- sqlserver存储过程加锁后怎么解锁_MySQL 的加锁处理,你都了解的一清二楚了吗?...
- ASP.NET Web API 路由 (上)
- 樽海鞘算法(SSA)
- css文字覆盖线性渐变,利用css使文字渐变
- html页脚颜色,HTML颜色一览(color)
- 水了一篇PAKDD2018的文章:Topic-specific Retweet Count Ranking for Weibo
- 2018年8月24日英语学习
- 【微服务】分布式如何利用Skywalking实现链路追踪与监控?
- 内外网双网卡路由配置
- [图文]解读《碟中谍4》中的人脸识别技术
- SecureCRT 5.1注册码
- 金税四期来了?五种危险行为千万不要有
- php商城毕业设计ppt,基于PHP的服装商城的系统设计与实现分析报告.ppt
- 用计算机打出自己的终身伴侣,ZT嫁人就要嫁玩CS的男人
- WEB应用程序UI模版代码编写及使用规范