实现思路

将PDF转为图片,将图片插入每一页PPT上,保持原尺寸和比例。

代码实现

引入的类

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfDocument;
import lombok.extern.java.Log;
import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageTree;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.poi.sl.usermodel.PictureData;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFPictureData;
import org.apache.poi.xslf.usermodel.XSLFPictureShape;
import org.apache.poi.xslf.usermodel.XSLFSlide;
public static void convertPDF2PPT(String pdfSource, String pptDest) throws IOException {XMLSlideShow ppt = new XMLSlideShow();File source = new File(pdfSource);JAssert.pass(source.exists(), "报告不存在");FileInputStream fis = new FileInputStream(source);PDDocument document = PDDocument.load(source);PDPageTree list = document.getPages();File outputDir = new File(pptDest);if (!outputDir.exists()){outputDir.mkdirs();}String fileName = source.getName().replace(".pdf","");PDFRenderer pdfRenderer = new PDFRenderer(document);List<File> tmpFiles = new ArrayList<>();for (int i = 0; i < list.getCount(); i++) {PDPage page = list.get(i);BufferedImage image = pdfRenderer.renderImageWithDPI(i, 300, ImageType.RGB);File tmpImagFile;if (outputDir.isDirectory()){tmpImagFile = new File(pptDest + fileName + "_" + (i + 1) + ".png");} else {String dir = outputDir.getParent();tmpImagFile = new File(dir+ File.separator + fileName + "_" + (i + 1) + ".png");}tmpFiles.add(tmpImagFile);int width = (int) page.getBBox().getWidth();int height = (int) page.getBBox().getHeight();ImageIO.write(image,"png",tmpImagFile);ppt.setPageSize(new Dimension(width,height));XSLFSlide slide = ppt.createSlide();byte[] pictureData = IOUtils.toByteArray(new FileInputStream(tmpImagFile.getAbsoluteFile()));XSLFPictureData pd = ppt.addPicture(pictureData, PictureData.PictureType.PNG);XSLFPictureShape pic = slide.createPicture(pd);pic.setAnchor(new Rectangle(0,0,width,height));}document.close();//清理临时生成的图片tmpFiles.forEach(File::delete);String pptDestName;if (pptDest.contains(".pptx")){pptDestName = pptDest;} else {pptDestName = pptDest+ File.separator + fileName +".pptx";}FileOutputStream out = new FileOutputStream(pptDestName);ppt.write(out);out.close();ppt.close();}

PDF box 结合POI 将pdf转为PPT相关推荐

  1. java使用poi、itextpdf将word、ppt转为pdf文件,并对pdf文件加盖签章

    1 环境及背景 SpringBoot项目,使用poi.itextpdf将excel.ppt.word文件转为pdf,并对pdf文件进行签章: 对Excel文件加图片水印,并加密设置为只读. 下面的方法 ...

  2. 一分钟教会你pdf如何转为PPT,简单易上手

    前段时间通识课老师让我们围绕"我喜欢的书本"主题去制作一个PPT,然后等到下周上台去演讲,于是我准备上网下载一些好看的模板来使用.然而当我好不容易找到一个喜欢的PPT模板时,却发现 ...

  3. 利用python将PDF转为PPT(课件专用)

    利用python将PDF转为PPT(课件专用) 前言:课程中老师经常会将课件作为PDF发放而非PPT,而现有的PDF阅读器一般不支持添加修改等操作,所以显得十分麻烦,考虑将PDF转换为PPT格式,方便 ...

  4. 如何将pdf转为ppt?

    大家在工作或学习上有没有将pdf转为ppt来使用过,其实这个方法恰恰能改变pdf难以编辑的特点,转换成同为电子文档的演示文稿ppt来使用,再配合作者的编辑讲解,会更加直观,生动的表达给观看者,让一些晦 ...

  5. java pdf转图片 pdfbox_JAVA基于PDF box将PDF转为图片

    在一项目中用到,本身我是.NET的,团队中有用到JAVA,故此我处理这个功能,记录以下备用. 1.引用:fontbox-2.0.16.jar.pdfbox-app-2.0.16.jar 版本一定要正确 ...

  6. php mpdf html 转pdf,使用 MPDF 将HTML转为PDF,然后将该PDF转为PNG图片的时候,中文报错... ......

    第一步: 使用 MPDF(版本6.1) 将 HTML 页面转为PDF文件,可以转成功.代码如下: $html = "对盲人初学者来说,它无需任何额外的修改."; // $html ...

  7. php mpdf html 转pdf,使用 MPDF 将HTML转为PDF,然后将该PDF转为PNG图片的时候,中文报错... ...汗血宝马...

    第一步: 使用 MPDF(版本6.1) 将 HTML 页面转为PDF文件,可以转成功.代码如下: $html = "对盲人初学者来说,它无需任何额外的修改."; // $html ...

  8. foxit phantom pdf 7.3_Jpeg to Pdf Converter 3000批量将图片转为PDF的方法

    Jpeg to Pdf Converter 3000是一款非常优秀的图片转PDF软件,该软件界面清爽美观,用户使用该软件,可以快速的将JPG图片转换为PDF文件,而且转换的质量非常高.我们在日常的办公 ...

  9. POI根据模板导出word文件,以及word转PDF,PDF转图片再插入PDF中(防止PDF被修改)

    POI操作word和PDF POI根据模板导出word文件 word转PDF PDF转图片再插入PDF中(防止PDF被修改) POI根据模板导出word文件 一.制作word模版,${xxxx}是一会 ...

最新文章

  1. 使用AD8302进行检波
  2. ElasticSearch(一)ElasticSearch的应用场景及为什么要选择ElasticSearch?
  3. 大道至简第一章阅读笔记
  4. Linux 配置静态IP
  5. python3 image_python3 ImageTk 安装方法
  6. springboot中配置文件使用2
  7. Struts2之文件上传(单文件/多文件)
  8. python变量和对象,切片列表元祖
  9. GRE Tunnel实现企业网中的***
  10. SQL 错误代码汇总
  11. github中文版_GitHub 上的 Awesome 系列(资源大全系列)
  12. ftp服务器默认文件路径,ftp服务器默认文件路径是
  13. Twincat3 硬件: 台湾DFI工业控制器,CPU1.1GHZ,RAM512
  14. eureka 缺点
  15. oracle认证071和061,别只为Oracle Database 18c的发布而兴奋了, 看一看你的Oracle认证考试到期了吗?...
  16. 程序员转行后都怎么样了,分享我身边的真实经历
  17. 阿里云OSS对象存储
  18. c语言零基础自学,c语言零基础入门 该如何学习
  19. 喷泉设备中的水幕效果
  20. cmd sqlplus远程连接_sqlplus连接远程数据库

热门文章

  1. 精灵图与字体图标的使用
  2. yocto project
  3. 《操作系统真象还原》第五章 ---- 轻取物理内存容量 启用分页畅游虚拟空间 力斧直斩内核先劈一角 闲庭信步摸谈特权级
  4. ajax返回报错html,Jquery AJAX POST调用返回200状态确定,但错误
  5. 分享机器学习入门课件
  6. 复旦大学邱锡鹏:若优化顺利,MOSS三月底开源;库克或被踢出苹果董事会;华为云联合CSDN发布智能化编程助手Snap|极客头条...
  7. 多AZ双活容灾部署的云端系统架构设计说明书框架
  8. 杭州封杀嘀嘀、快的打车的加价功能
  9. 计算机绘图要什么铅笔,素描初学者需要准备哪些画画工具
  10. 女生无法拒绝的表白拼图