Java实现PPT转化为PDF
这篇文章主要为大家详细介绍了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相关推荐
- 【WebPPTtoPDF】在线将PPT转化为PDF,支持自定义排列方式
GitHub地址:https://github.com/HanquanHq/WebPPTtoPDF1 练手小项目,不足之处欢迎指正. WebPPTtoPDF 简介 在线将PPT转化为PDF的工具 20 ...
- 使用jacob将ppt转化为pdf
1.下载jacob包 2.将jar包引入项目,根据系统位数将相关dll文件引入到{JAVA_HOME}\jre\bin和C:\Windows\System32目录下 3.代码 //测试 pub ...
- 怎样把ppt转化为pdf
怎样把ppt转化为pdf 简介 你是否还在为找不到合适的PPT转换成PDF转换器而感到烦恼?或者对大量的PPT幻灯片内容需要转换成PDF而犯愁呢?下面笔者为大家介绍2种将PPT演示文稿中的文字转换成P ...
- 怎样将ppt转化为pdf文件
在职场工作当中ppt文件和pdf文件都是不可或缺的.Ppt文件通常用于工作会议.工作汇报等方面,而pdf文件则是用于文件的浏览查阅.文件的保存以及文件的打印.两种文件虽然是完全不同的形式,不同的作用, ...
- 想在Java中把PPT转化为PDF吗?教你用Aspose.Slides轻松搞定!
PDF已成为最广泛和最常用的数字文档格式.由于PDF格式具有固定的布局,因此大多数文档在共享之前都已转换为PDF. 在将各种文档转换为PDF格式的过程中,PPT到PDF的转换是一种流行的用例,且非常的 ...
- python批量将word、ppt转化为pdf(极简版)
日将将PPT和word批量转成pdf的需求还是比较普遍的.下列两段代码中,word转pdf的有时候会出现莫名奇妙的报错,跑了两次由于顺利将工作完成了,也没继续研究原因,有需要的使用时得注意下.ppt转 ...
- java pdf转ppt_java实现PPT转化为PDF
jacob的方法,足可以解决这个问题,但是我既然以前曾经做过报表,就想尝试不同的方法. jacob是一座连接java和微软的桥,所有的解析由微软解析.poi是没有微软解析的那么原汁原味的,所以如果要求 ...
- 用Java实现PPT转换成PDF的一种方式--openoffice的使用
此文章为2016-09-20 17:19:18,本人于网易博客所写,今日搬迁到此. 今天必须要写篇日志记录此刻的心情,因为在搜集众多资料后,终于实现了这一功能. 最近在做的一个项目需要在网页中播放PP ...
- java将图片转化为pdf并输出
1.导入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox< ...
- 使用powershell将Ppt转化为PDF
直接上代码 #UPDATE DATA IN Ppt FILES 更新Excel文件中的数据 #THEN CREATE PDF FILE Then 建立PDF文档[string]$path = &quo ...
最新文章
- 如何自行查询SAP Spartacus Organization Unit List的取数逻辑
- linux 脚本 试题,10个Linux脚本面试题,看看你能答出几个?
- oracle临时表经常被锁_5.性能测试 - Oracle体系结构和性能优化简介
- 数十名工程师作战 5 天,阿里达摩院连夜研发智能疫情机器人
- Apache ab 使用说明
- 小米笔记本pro黑苹果原厂intel蓝牙亲测可用!!
- java jconsole 远程连接_jconsole连接远程tomcat
- 2022年全球市场木材干燥窑总体规模、主要生产商、主要地区、产品和应用细分研究报告
- 如何实现高效的室内定位和追踪?
- 2021:医学视觉问答的多元模型量化Multiple Meta-modal Quantifying for Medical Visual Question Answering
- 樊登读书赋能读后感_《赋能》读后感心得体会
- 技巧_MFC_标题栏背景
- 骨传导耳机损伤大脑?具有不伤耳优点的骨传导耳机了解一下
- oracle中的start with connect by用法
- 《重构》经典句子摘录,程序员读过后一定有收获
- MFC项目有关打印功能(支持分页打印)
- 西瓜视频 iOS Voice Over 无障碍适配实践
- 定义一个图形类及其子类,计算其面积和周长
- 【electron】打开离线包-双击文件打开关联应用
- C语言实现10只小猪称体重