这篇文章主要为大家详细介绍了java实现PPT转化为PDF的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

文章目录

  • ①、添加POM依赖:
  • ②、将 PPT文件 转为 PDF文件案例代码:

PPT文件

将 PPT文件转为 PDF文件后

①、添加POM依赖:

        <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.1.3</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.8</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.8</version></dependency>

②、将 PPT文件 转为 PDF文件案例代码:

package com.jeewechat.wechat.pdf;import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfWriter;
import lombok.extern.log4j.Log4j;
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.hslf.model.Slide;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.*;/*** @ClassName: PPTUtil* @Description TODO 将 PPT文件 转为 PDF文件* @Author: WangTianLiang* @Create: 2021/5/12**/
@Log4j
public class PPTUtil {/*** 测试用例*/public static void main(String[] args) {// 读入PPT文件File file = new File("E:/PPT/Java问题定位培训.ppt");boolean b = doPPTtoImage (file);System.out.println (b);}/*** @description TODO 将PPT生成PDF* @param file PPT文件对象* @return boolean* @author WangTianLiang* @date 2021/5/12*/public static boolean doPPTtoImage(File file) {// step 1: 文件格式校验boolean isppt = checkFile(file);if (!isppt) {log.info("文件格式错误!");return false;}//获取文件名称 如 Java问题定位培训.pptString oldFileName = file.getName();// step 2: 文件名称截取获取 Java问题定位培训String fileName = oldFileName.substring(0, oldFileName.indexOf("."));try {//step 3: 创建文件字节输入流对象 加载PPTFileInputStream is = new FileInputStream(file);SlideShow ppt = new SlideShow(is); //加载PPTis.close();Dimension pgsize = ppt.getPageSize();Slide[] slide = ppt.getSlides(); //ppt页数int slideLength = slide.length;if (slideLength <= 0){return false;}String uuid = UUID.randomUUID().toString().replaceAll("-", "");// step 4: 创建目录用于存储生产后的PDF文件String pptFilePathUrl = "E:\\PPT\\";// step 5: 创建目录用于存储PPT转为jpeg 后的图片文件String imageFilePathUrl = "E:\\PPT\\"+ uuid +"\\";File f=new File(imageFilePathUrl);if(!f.isDirectory()) {  //判断是否有D://ExamPaperDerived/此文件夹f.mkdirs();         //没有则新建再保存}// step 6: 循环读取图片数据for (int i = 0; i < slide.length; i++) {log.info("第" + i + "页。");if (slide[i].getNotesSheet() != null&& slide[i].getNotesSheet().getTextRuns() != null) {// 获取第一个备注log.info("备注:"+ 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("宋体");// 获取文本列表log.info(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);// step 7: 输出文件 设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径FileOutputStream out = new FileOutputStream(imageFilePathUrl+ "pict_"+(i + 1) + ".jpeg");ImageIO.write(img, "jpeg", out);out.close();}// step 8: 将图片生产PPTBoolean res = ImagetoPDF (imageFilePathUrl, pptFilePathUrl,fileName, ".pdf", slideLength);if (res){return true;}return false;} catch (FileNotFoundException e) {log.error(e.getMessage());} catch (IOException e) {log.error(e.getMessage());}return false;}/*** @description TODO 检查文件是否为PPT* @param file 文件对象* @return boolean* @author WangTianLiang* @date 2021/5/12*/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;}}/*** @description TODO 将图片生产PPT* @param imageFilePathUrl 图片存储路径* @param pptFilePathUrl PPT存储路径* @param fileName PPT文件名称* @param Type 文件后缀* @param slideLength ppt页数* @return java.lang.Boolean* @author WangTianLiang* @date 2021/5/12*/public static Boolean ImagetoPDF(String imageFilePathUrl,String pptFilePathUrl,String fileName, String Type,int slideLength) {// step 1: 创建文档对象Document document = new Document();try {// step 2: 我们创建一个writer来监听文档并将pdf流定向到文件PdfWriter.getInstance(document, new FileOutputStream(pptFilePathUrl+fileName+Type));// step 3: 打开文档document.open();for(int i=1;i<=slideLength;i++) {// step 4: 将图片添加到PPT文件中作为内容Image jpg = Image.getInstance(imageFilePathUrl+"pict_"+i+".jpeg");jpg.scalePercent(70);document.add(jpg);}// step 5: 关闭文档document.close();//创建文件流File temp = new File(imageFilePathUrl);// step 6: 判断文件是否存储if (temp.exists()) {// step 7: 递归删除文件信息Boolean res = deleteDir (temp);return res;}}catch(DocumentException de) {log.error(de.getMessage());}catch(IOException ioe) {log.error(ioe.getMessage());}return false;}/*** @description TODO 递归删除目录下的所有文件及子目录下所有文件* @param dir 将要删除的文件目录* @return boolean boolean 删除失败* @author WangTianLiang* @date 2021/5/12*/public static boolean deleteDir(File dir) {if (dir.isDirectory()) {String[] children = dir.list();//递归删除目录中的子目录下for (int i = 0; i < children.length; i++) {boolean success = deleteDir(new File(dir, children[i]));if (!success) {return false;}}}// 目录此时为空,可以删除return dir.delete();}}

希望可以帮助到您…

Java实现PPT转化为PDF相关推荐

  1. 【WebPPTtoPDF】在线将PPT转化为PDF,支持自定义排列方式

    GitHub地址:https://github.com/HanquanHq/WebPPTtoPDF1 练手小项目,不足之处欢迎指正. WebPPTtoPDF 简介 在线将PPT转化为PDF的工具 20 ...

  2. 使用jacob将ppt转化为pdf

    1.下载jacob包 2.将jar包引入项目,根据系统位数将相关dll文件引入到{JAVA_HOME}\jre\bin和C:\Windows\System32目录下 3.代码 //测试     pub ...

  3. 怎样把ppt转化为pdf

    怎样把ppt转化为pdf 简介 你是否还在为找不到合适的PPT转换成PDF转换器而感到烦恼?或者对大量的PPT幻灯片内容需要转换成PDF而犯愁呢?下面笔者为大家介绍2种将PPT演示文稿中的文字转换成P ...

  4. 怎样将ppt转化为pdf文件

    在职场工作当中ppt文件和pdf文件都是不可或缺的.Ppt文件通常用于工作会议.工作汇报等方面,而pdf文件则是用于文件的浏览查阅.文件的保存以及文件的打印.两种文件虽然是完全不同的形式,不同的作用, ...

  5. 想在Java中把PPT转化为PDF吗?教你用Aspose.Slides轻松搞定!

    PDF已成为最广泛和最常用的数字文档格式.由于PDF格式具有固定的布局,因此大多数文档在共享之前都已转换为PDF. 在将各种文档转换为PDF格式的过程中,PPT到PDF的转换是一种流行的用例,且非常的 ...

  6. python批量将word、ppt转化为pdf(极简版)

    日将将PPT和word批量转成pdf的需求还是比较普遍的.下列两段代码中,word转pdf的有时候会出现莫名奇妙的报错,跑了两次由于顺利将工作完成了,也没继续研究原因,有需要的使用时得注意下.ppt转 ...

  7. java pdf转ppt_java实现PPT转化为PDF

    jacob的方法,足可以解决这个问题,但是我既然以前曾经做过报表,就想尝试不同的方法. jacob是一座连接java和微软的桥,所有的解析由微软解析.poi是没有微软解析的那么原汁原味的,所以如果要求 ...

  8. 用Java实现PPT转换成PDF的一种方式--openoffice的使用

    此文章为2016-09-20 17:19:18,本人于网易博客所写,今日搬迁到此. 今天必须要写篇日志记录此刻的心情,因为在搜集众多资料后,终于实现了这一功能. 最近在做的一个项目需要在网页中播放PP ...

  9. java将图片转化为pdf并输出

    1.导入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox< ...

  10. 使用powershell将Ppt转化为PDF

    直接上代码 #UPDATE DATA IN Ppt FILES 更新Excel文件中的数据 #THEN CREATE PDF FILE Then 建立PDF文档[string]$path = &quo ...

最新文章

  1. 如何自行查询SAP Spartacus Organization Unit List的取数逻辑
  2. linux 脚本 试题,10个Linux脚本面试题,看看你能答出几个?
  3. oracle临时表经常被锁_5.性能测试 - Oracle体系结构和性能优化简介
  4. 数十名工程师作战 5 天,阿里达摩院连夜研发智能疫情机器人
  5. Apache ab 使用说明
  6. 小米笔记本pro黑苹果原厂intel蓝牙亲测可用!!
  7. java jconsole 远程连接_jconsole连接远程tomcat
  8. 2022年全球市场木材干燥窑总体规模、主要生产商、主要地区、产品和应用细分研究报告
  9. 如何实现高效的室内定位和追踪?
  10. 2021:医学视觉问答的多元模型量化Multiple Meta-modal Quantifying for Medical Visual Question Answering
  11. 樊登读书赋能读后感_《赋能》读后感心得体会
  12. 技巧_MFC_标题栏背景
  13. 骨传导耳机损伤大脑?具有不伤耳优点的骨传导耳机了解一下
  14. oracle中的start with connect by用法
  15. 《重构》经典句子摘录,程序员读过后一定有收获
  16. MFC项目有关打印功能(支持分页打印)
  17. 西瓜视频 iOS Voice Over 无障碍适配实践
  18. 定义一个图形类及其子类,计算其面积和周长
  19. 【electron】打开离线包-双击文件打开关联应用
  20. C语言实现10只小猪称体重

热门文章

  1. UltraCompare官方网站
  2. 推荐一个阅读代码、文档的利器:屏幕贴图工具
  3. SLA、BFD、NQA、ACl 笔记
  4. postgreSQL / MySQL / 达梦 时间查询 ,获取近几天、一周、一月、季度、一年时间内的数据
  5. 苹果手机Safri浏览器 js 解析问题
  6. 预告 | PGCon 2022(PostgreSQL全球开发者大会)开幕,IvorySQL受邀参加
  7. 无论产品经理是否逃离北上广,过硬的产品实力才能让自己始终拥有竞争力
  8. 职业资格计算机操作员,职业资格 计算机操作员
  9. windows 豆沙绿参数
  10. 利用css来制作轮播图