java excel、word、PPT转换成pdf预览

先引入包:[lib下载地址](https://mp.csdn.net/mp_download/manage/download/UpDetailed)

在这里插入图片描述
在这里插入图片描述

Controllerpublic AjaxResult fileToPdf(@RequestBody VerifyCode url, HttpServletResponse response, HttpServletRequest request) throws IOException {String fileUrl = request.getScheme() + "://" + request.getServerName() + ":" + port + fileDir + url.getFileName().split("\\.")[0]+ ".pdf";String fileToPdfUrl = fileToPdf + url.getFileName().split("\\.")[0] + ".pdf";File newFile = new File(fileToPdfUrl);if(newFile.exists()){return AjaxResult.success(fileUrl);}File file = new File(fileToPdf);if(!file.exists()){file.mkdirs();}String suffix = url.getUrl().substring(url.getUrl().lastIndexOf("."));String type = FileTransForUtils.getResourceTypesDocument(suffix);if("word".equals(type)){return AjaxResult.success(FileTransForUtils.word3Pdf(url.getUrl(),response.getOutputStream(),fileToPdfUrl,fileUrl));}else if("excel".equals(type)){return AjaxResult.success(FileTransForUtils.excel3pdf(url.getUrl(), response.getOutputStream(),fileToPdfUrl,fileUrl));}else if("ppt".equals(type)){return AjaxResult.success(FileTransForUtils.ppt3pdf(url.getUrl(),response.getOutputStream(),fileToPdfUrl,fileUrl));}else {return AjaxResult.success(fileUrl);}}
package com.det.utils;import com.aspose.cells.Workbook;
import com.aspose.slides.Presentation;
import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import com.det.common.utils.file.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;import java.io.*;
import java.nio.charset.StandardCharsets;
import java.rmi.ServerException;/*** @Author: lsx* @createDate: 2023/11/5 10:49* @description:*/
public class FileTransForUtils {private static final Logger logger = LoggerFactory.getLogger(FileTransForUtils.class);//word转PDFpublic synchronized static String word3Pdf(String wordPath, OutputStream outputStream,String fileName,String fileUrl) throws ServerException {if (!getLicense("word")) {          // 验证License 若不验证则转化出的pdf文档会有水印产生throw new ServerException("验证License失败。");}try {long old = System.currentTimeMillis();InputStream inputStreamFromUrl = FileUtils.getInputStreamFromUrl(wordPath);//Address是将要被转化的word文档Document doc = new Document(inputStreamFromUrl);//新建一个pdf文档File file = new File(fileName);FileOutputStream os = new FileOutputStream(file);//全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB,
//                doc.save(outputStream, SaveFormat.PDF);doc.save(os, SaveFormat.PDF);// XPS, SWF 相互转换long now = System.currentTimeMillis();os.close();outputStream.flush();outputStream.close();logger.info("word共耗时:" + ((now - old) / 1000.0) + "秒");  //转化用时} catch (Exception e) {logger.error(String.valueOf(e));e.printStackTrace();}return fileUrl;}//excel转PDFpublic synchronized static String excel3pdf(String excelPath, OutputStream outputStream,String fileName,String fileUrl) throws ServerException {if (!getLicense("excel")) { // 验证License 若不验证则转化出的pdf文档会有水印产生throw new ServerException("验证License失败。");}try {long old = System.currentTimeMillis();InputStream inputStreamFromUrl = FileUtils.getInputStreamFromUrl(excelPath);Workbook wb = new Workbook(inputStreamFromUrl);// 原始excel路径//新建一个pdf文档File file = new File(fileName);FileOutputStream os = new FileOutputStream(file);
//                wb.save(outputStream,com.aspose.cells.SaveFormat.PDF);wb.save(os,com.aspose.cells.SaveFormat.PDF);long now = System.currentTimeMillis();outputStream.flush();outputStream.close();os.close();logger.info("excel共耗时:" + ((now - old) / 1000.0) + "秒");  //转化用时} catch (Exception e) {logger.error(String.valueOf(e));e.printStackTrace();}return fileUrl;}//ppt转PDFpublic synchronized static String ppt3pdf(String pptPath, OutputStream outputStream,String fileName,String fileUrl) throws ServerException {// 验证Licenseif (!getLicense("ppt")) {throw new ServerException("验证License失败。");}FileOutputStream os = null;try {long old = System.currentTimeMillis();InputStream inputStreamFromUrl = FileUtils.getInputStreamFromUrl(pptPath);Presentation pres = new Presentation(inputStreamFromUrl);//输入ppt路径//IFontsManager fontsManager = pres.getFontsManager();//新建一个pdf文档File file = new File(fileName);os = new FileOutputStream(file);
//                pres.save(outputStream,com.aspose.slides.SaveFormat.Pdf);pres.save(os,com.aspose.slides.SaveFormat.Pdf);outputStream.flush();outputStream.close();long now = System.currentTimeMillis();logger.info("ppt共耗时:" + ((now - old) / 1000.0) + "秒");  //转化用时} catch (Exception e) {logger.error(String.valueOf(e));e.printStackTrace();}finally {try {os.close();} catch (IOException e) {e.printStackTrace();}}return fileUrl;}//剔除水印private static boolean getLicense(String type) {boolean result = false;try {// 凭证String license ="<License>\n" +"  <Data>\n" +"    <Products>\n" +"      <Product>Aspose.Total for Java</Product>\n" +"      <Product>Aspose.Words for Java</Product>\n" +"    </Products>\n" +"    <EditionType>Enterprise</EditionType>\n" +"    <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +"    <LicenseExpiry>20991231</LicenseExpiry>\n" +"    <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +"  </Data>\n" +"  <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" +"</License>";InputStream is = new ByteArrayInputStream(license.getBytes(StandardCharsets.UTF_8));if(type.equals("word")){License asposeLic = new License();asposeLic.setLicense(is);}else if (type.equals("excel")){com.aspose.cells.License asposeLic = new com.aspose.cells.License();asposeLic.setLicense(is);}else if (type.equals("ppt")){com.aspose.slides.License aposeLic = new com.aspose.slides.License();aposeLic.setLicense(is);}result = true;} catch (Exception e) {logger.error(String.valueOf(e));e.printStackTrace();return false;}return result;}/*** 判断资源类型文档类*/public static String getResourceTypesDocument(String suffix) {String type = null;switch (suffix) {//文档类型case ".doc":case ".docx":case ".txt":type = "word";break;case ".xls":case ".xlsx":type = "excel";break;case ".ppt":case ".pptx":type = "ppt";break;}return type;}public static void main(String[] args) throws FileNotFoundException {String inputPath = "C:\\Users\\detong\\Desktop\\安全活动记录.docx";
//            String outputPath = "C:\\Users\\detong\\Desktop\\焊工作业教育培训2023.pdf";String suffix = inputPath.substring(inputPath.lastIndexOf("."));String type = getResourceTypesDocument(suffix);/*if("word".equals(type)){word3Pdf(inputPath,new FileOutputStream(new File("C:\\Users\\detong\\Desktop\\安全活动记录.word")));}else if("excel".equals(type)){excel3pdf(inputPath,new FileOutputStream(new File("C:\\Users\\detong\\Desktop\\安全活动记录.excel")));}else if("ppt".equals(type)){ppt3pdf(inputPath,new FileOutputStream(new File("C:\\Users\\detong\\Desktop\\安全活动记录.pdf")));}*/}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/189021.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[pipe-自写管道] 强网拟态2023-water-ker

程序分析 保护当然都开了, 题目给了一次增加, 释放, 修改一字节堆块的能力, 这里释放堆块后没有将其指针置空从而导致了 UAF. 漏洞利用 这里的堆块大小为 512 字节并是 SLAB_ACCOUNT, 所以可以直接利用管道去构造自写管道从而构造任意读写系统, 详细见大佬博客:【CTF.0x08】D…

NSF服务器

1.简介 1.1 NFS背景介绍 NFS是一种古老的用于在UNIX/Linux主机之间进行文件共享的协议。它古老到你必须穿着白大补才能接近一台计算机的年代。在那个年代&#xff0c;所有的联网计算机都被认为是可信的&#xff0c;而不像现今这样&#xff0c;任何人都有多种多样方法能连接到你…

【解决】conda-script.py: error: argument COMMAND: invalid choice: ‘activate‘

运行conda activate base报错&#xff1a; 试了网上找到的解决方法都不行&#xff1a; 最后切换了一下terminal&#xff1a; 从powershell改回cmd&#xff08;不知道为什么一开始手贱换成powershell&#xff09; 就可以了

(一)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法&#xff08;DBO、LO、SWO、COA、LSO、KOA、GRO&#xff09;简介 1、蜣螂优化算法DBO 蜣螂优化算法&#xff08;Dung beetle optimizer&#xff0c;DBO&#xff09;由Jiankai Xue和Bo Shen于2022年提出&#xff0c;该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

Python - 利用 OCR 技术提取视频台词、字幕

目录 一.引言 二.视频处理 1.视频样式 2.视频截取 ◆ 裁切降帧 ◆ 处理效果 3.视频分段 三.OCR 处理 1.视频帧处理 2.文本识别结果 3.后续工作与优化 ◆ 识别去重 ◆ 多线程提效 ◆ 片头片尾优化 四.总结 一.引言 视频经常会配套对应的台词或者字幕&#xff0c…

4.HTML网页开发的工具

4. 网页开发的工具 4.1 快捷键 4.1.1 快速复制一行 快捷键&#xff1a;shiftalt下箭头&#xff08;上箭头&#xff09; 或者ctrlc 然后 ctrlv 4.1.2 选定多个相同的单词 快捷键&#xff1a; ctrld 4.1.3 添加多个光标 快捷键&#xff1a;ctrlalt上箭头&#xff08;下箭头&…

CS224W6.1——介绍图神经网络GNN

之前我们讨论了一些节点嵌入技术&#xff0c;它们可以通过随机游走的过程学习与任务无关的特征。从这篇开始&#xff0c;我们介绍了令人兴奋的图神经网络技术&#xff0c;该技术基于图结构用多层非线性变换对节点特征进行编码。图神经网络在各种任务中表现出非凡的性能&#xf…

vue3响应式api

响应式api——compositon api setup&#xff1a; 不要再想this问题执行是在beforeCreated之前 beforeCreated&#xff1a;也就是创建了一个实例 created&#xff1a;挂载了数据 通过形参props接收&#xff0c;只读 以后所有代码都写到setup中 判断是否只读&#xff1a;isReadon…

Zabbix SNMPv3

一、Snmpv3简述 SNMPv3是Simple Network Management Protocol version 3&#xff08;简单网络管理协议第三版&#xff09;的缩写。它是一种网络管理协议&#xff0c;用于监控和管理网络中的设备、系统和应用程序。 相对于之前的版本&#xff0c;SNMPv3具有更强的安全性和扩展…

spring-cloud-stream

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

IIS前端服务和代理

前端服务可以用nginx和IIS开启&#xff0c;windows自带IIS方便管理一点。其实用docker的nginx更方便管理。 记录一下IIS的安装和开启服务过程 1、打开控制面板点击程序&#xff0c;再点击启用或关闭windows功能。 2、 点击左侧启用或关闭Windows功能。 3、把框框中全选上之后点…

便捷Benchmark.sh 自动匹配workload(自用)

​ 因为db_bench选项太多&#xff0c;而测试纬度很难做到统一&#xff08;可能一个memtable大小的配置都会导致测试出来的写性能相关的的数据差异很大&#xff09;&#xff0c;所以官方给出了一个benchmark.sh脚本用来对各个workload进行测试。 该脚本能够将db_bench测试结果中…

CMOS介绍

1 二极管 2 CMOS 2.1 栅极、源极、漏极 2.2 内部结构 2.2 导电原理 - 原理&#xff1a;1.通过门级和衬底加一个垂直电场Ev&#xff0c;从而在两口井之间形成反形层2.如果加的电场足够强&#xff0c;反形层就可以把source&#xff08;源极&#xff09;和drain&#xff08;漏极…

Doris学习--1、Doris简介、操作Doris、Doris架构(数据模型)

星光下的赶路人star的个人主页 心之所向&#xff0c;剑之所往 文章目录 1、Doris简介1.1 快速开始1.2 安装配置1.2.1 应知前提1.2.2 配置Doris1.2.2.0 配置前提1.2.2.1 配置FE&#xff08;Frontend&#xff09;1.2.2.2 启动FE1.2.2.3 连接FE1.2.2.4 停止FE1.2.2.5 配置BE&#…

物联网水表电子阀工作原理是怎样的?

随着科技的不断发展&#xff0c;物联网技术逐渐深入到我们的生活之中。作为智能家居的重要组成部分&#xff0c;物联网水表电子阀凭借其智能化、节能环保等优势&#xff0c;受到了越来越多用户的青睐。接下来&#xff0c;合众小编将来为大家介绍下物联网水表电子阀工作原理。 一…

Git 进阶使用

一. Git图形化操作 1.1.什么是图形化管理工具 图形化管理工具是一种通过可视化界面来操作计算机系统或应用程序的软件工具。在软件开发中&#xff0c;它通常用于管理和操作版本控制系统&#xff08;如Git、SVN等&#xff09;以及代码开发环境&#xff08;如IDE&#xff09;。与…

SSM图书管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 图书管理系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和 数据库&#xff0c;系统主要…

(二)正点原子I.MX6ULL u-boot移植

一、概述 这里使用的是NXP官方2022.04发布的uboot&#xff0c;移植到正点原子阿尔法开发板&#xff08;v2.1&#xff09; u-boot下载&#xff1a;gitgithub.com:nxp-imx/uboot-imx.git 移植是基于NXP的mx6ull_14x14_evk 二、编译NXP官方uboot 进入NXP的u-boot目录 先在Makefile…

Word 插入的 Visio 图片显示为{EMBED Visio.Drawing.11} 解决方案

World中&#xff0c;如果我们插入了Visio图还用了Endnote&#xff0c; 就可能出现&#xff1a;{EMBED Visio.Drawing.11}问题 解决方案&#xff1a; 1.在相应的文字上右击&#xff0c;在出现的快捷菜单中单击“切换域代码”&#xff0c;一个一个的修复。 2.在菜单工具–>…

亚马逊云AI应用科技创新下的Amazon SageMaker使用教程

目录 Amazon SageMaker简介 Amazon SageMaker在控制台的使用 模型的各项参数 pytorch训练绘图部分代码 Amazon SageMaker简介 亚马逊SageMaker是一种完全托管的机器学习服务。借助 SageMaker&#xff0c;数据科学家和开发人员可以快速、轻松地构建和训练机器学习模型&#…