当前位置: 首页 > news >正文

Java使用documents4j将word和excel转pdf

  1. pom.xml添加documents4j依赖
<!-- documents4j -->
<dependency><groupId>com.documents4j</groupId><artifactId>documents4j-local</artifactId><version>1.0.3</version>
</dependency>
<!-- documents4j 转 word -->
<dependency><groupId>com.documents4j</groupId><artifactId>documents4j-transformer-msoffice-word</artifactId><version>1.0.3</version>
</dependency>
<!-- documents4j 转 pdf -->
<dependency><groupId>com.documents4j</groupId><artifactId>documents4j-transformer-msoffice-excel</artifactId><version>1.0.3</version>
</dependency>
  1. 使用
/*** word/excel转pdf* @param inputWordPath 传入转换之前的路径 比如:"D:\\printFile\\test.pdf"* @param outPdfPath 传入转换之后的路径 比如:"D:\\printFile\\test.pdf"*/
private void wordOrExcelTransition(String inputWordPath, String outPdfPath){File inputWord = new File(inputWordPath);File outputFile = new File(outPdfPath);try  {InputStream docxInputStream = new FileInputStream(inputWord);OutputStream outputStream = new FileOutputStream(outputFile);IConverter converter = LocalConverter.builder().build();String fileTyle = inputWordPath.substring(inputWordPath.lastIndexOf("."), inputWordPath.length());//获取文件类型if(".docx".equals(fileTyle)){converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute();}else if(".doc".equals(fileTyle)){converter.convert(docxInputStream).as(DocumentType.DOC).to(outputStream).as(DocumentType.PDF).execute();}else if(".xls".equals(fileTyle)){converter.convert(docxInputStream).as(DocumentType.XLS).to(outputStream).as(DocumentType.PDF).execute();}else if(".xlsx".equals(fileTyle)){converter.convert(docxInputStream).as(DocumentType.XLSX).to(outputStream).as(DocumentType.PDF).execute();}outputStream.close();System.out.println("success");} catch (Exception e) {e.printStackTrace();}}

相关文章:

Java使用documents4j将word和excel转pdf

pom.xml添加documents4j依赖 <!-- documents4j --> <dependency><groupId>com.documents4j</groupId><artifactId>documents4j-local</artifactId><version>1.0.3</version> </dependency> <!-- documents4j 转 wor…...

使用策略模式实现 Spring 分布式和单机限流

我们可以使用策略模式来统一单机限流和分布式限流的实现,提高代码的可扩展性和可维护性。 思路是定义一个 RateLimitStrategy 接口,并分别实现单机限流策略 LocalRateLimitStrategy 和分布式限流策略 DistributedRateLimitStrategy。在 AOP 切面中,根据配置决定使用哪种限流策…...

@CrossOrigin注解解决跨域问题

文章目录 一、什么是跨域二、CrossOrigin注解是干什么用的三、用法 一、什么是跨域 跨域&#xff0c;指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的&#xff0c;是浏览器对JavaScript施加的安全限制。 所谓同源是指&#xff0c;域名&#xff0c;协议&…...

【力扣】45. 跳跃游戏 II

Problem: 45. 跳跃游戏 II 文章目录 问题思路复杂度Code 问题 思路 核心思路&#xff0c;例如nums[i]5&#xff0c;那么最远能跳五步&#xff1b; //那么在这接下来1-5范围内&#xff0c;哪个能让我跳的最远&#xff0c;这个最远指的是 -------------------------------------…...

【Python基础】19.eval函数的使用

eval函数 eval()将字符串转变为有效的表达式来求值并返回对应的结果 基础数据计算 In [1]: eval("1 1") Out[1]: 2字符串重复 In [2]: eval (" * * 10") Out[2]: **********字符串转为列表 In [3]: type(eval("[1,2,3,4,5]")) Out[3]: lis…...

对装饰器模式的理解

目录 一、场景二、面对场景中的新需求&#xff0c;我们怎么办&#xff1f;1、暴力法&#xff1a;直接修改原有的代码。2、子类继承法&#xff1a;既然要增强行为&#xff0c;那我搞一个子类&#xff0c;覆写不就完事了&#xff1f;3、装饰器模式 三、对装饰器模式的思考1、从代…...

在替换微软AD的CA证书服务AD CS前,要先做哪些准备工作?

AD CS是什么 关于这个问题&#xff0c;有几个概念需要先弄明白&#xff1a;PKI、CA、数字证书。 PKI&#xff08;Public Key Infrastructure&#xff0c;公钥基础设施&#xff09;是提供公钥加密和数字签名服务的系统或平台&#xff0c;实现基于公钥密码体制的密钥和证书的产生…...

Java中的System

文章目录 概要小结 概要 在Java中&#xff0c;System类提供了一些静态方法来实现与系统相关的操作。以下是System类中常用的方法及其含义&#xff1a; System.currentTimeMillis()&#xff1a;返回当前时间&#xff08;以毫秒为单位&#xff09;自1970年1月1日00:00:00 GMT以来…...

Mybites一对多collection

Goods实体属性&#xff1a; private List<GoodsImg> goodsImgList; private String id; private String name; GoodsImg实体属性&#xff1a; private String id; private String fid; private String imgpath; …...

基于springboot实现图书进销存管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现图书进销存管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了图书进销存管理系统的开发全过程。通过分析图书进销存管理系统管理的不足&#xff0c;创建了一个计算机管理图书进销…...

敏捷开发:想要快速交付就必须舍弃产品质量?

随着敏捷的推广与应用&#xff0c;如今已经成为了最有效的团队级别的方法论&#xff0c;越来越多的软件和 IT 团队正在采用敏捷&#xff0c;但是你在敏捷吗&#xff1f; 自从那一群充满影响力的软件从业者聚集在一起并发布了《敏捷宣言》以来&#xff0c;已经过去了 23 年。敏…...

SNMP-详解指南

目录 SNMP介绍 SNMP的工作机制轮询 SNMP的MIB&#xff08;管理信息库&#xff09; SNMP是基于UDP协议 SNMP介绍 SNMP&#xff08;Simple Network Management Protocol&#xff0c;简单网络管理协议&#xff09;是一种广泛应用于互联网上的网络管理协议。它提供了一种标准化…...

vue-router 原理【详解】hash模式 vs H5 history 模式

hash 模式 【推荐】 路由效果 在不刷新页面的前提下&#xff0c;根据 URL 中的 hash 值&#xff0c;渲染对应的页面 http://test.com/#/login 登录页http://test.com/#/index 首页 核心API – window.onhashchange 监听 hash 的变化&#xff0c;触发视图更新 window.onhas…...

WebGl/Three 粒子系统 人物破碎及还原运动

粒子 首先&#xff0c;加载模型&#xff0c;这是万千粒子的前身&#xff0c;模型对象由很多面构成&#xff0c;这些面又是由各个点构成的&#xff0c;所以可以将模型的几何体对象geometry赋给粒子对象&#xff0c;粒子物体用Points方式渲染 bloader.load("obj/female02/Fe…...

华为OD-C卷-分披萨[100分]

题目描述 "吃货"和"馋嘴"两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。 由于两人都想吃到最多的披萨,他们商量了一个他们认…...

uniapp 中video标签视频禁止快,拖拽快进

废话不多说&#xff0c;直接上代码 <video id"myVideo" :src"sectionInfo.type_config.video_url" timeupdate"bindtimeupdate"></video> <script>export default {data() {return {historyTime: 0,}},methods:{// 监听播放进…...

网页端HTML使用MQTTJs订阅RabbitMQ数据

最近在做一个公司的日志组件时有一个问题难住了我。今天问题终于解决了。由于在解决问题中&#xff0c;在网上也查了很多资料都没有一个完整的实例可以参考。所以本着无私分享的目的记录一下完整的解决过程和实例。 需求&#xff1a;做一个统一日志系统可以查看日志列表和一个可…...

课题学习(二十一)----姿态更新的四元数算法推导

声明&#xff1a;本人水平有限&#xff0c;博客可能存在部分错误的地方&#xff0c;请广大读者谅解并向本人反馈错误。    最近需要使用AEKF对姿态进行结算&#xff0c;所以又对四元数进了深入的学习&#xff0c;本篇博客仅对四元数进行推导&#xff0c;后续会对基于四元数的…...

NL2SQL进阶系列(5):论文解读业界前沿方案(DIN-SQL、C3-SQL、DAIL-SQL、SQL-PaLM)、新一代数据集BIRD-SQL解读

NL2SQL进阶系列(5)&#xff1a;论文解读业界前沿方案&#xff08;DIN-SQL、C3-SQL、DAIL-SQL&#xff09;、新一代数据集BIRD-SQL解读 NL2SQL基础系列(1)&#xff1a;业界顶尖排行榜、权威测评数据集及LLM大模型&#xff08;Spider vs BIRD&#xff09;全面对比优劣分析[Text2…...

双指针运用:删除重复元素、移除元素

26.删除重复元素 题目描述 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元…...

基于WebSocket的Web即时通讯后端架构设计与实战部署指南

1. 项目概述&#xff1a;一个面向开发者的Web即时通讯解决方案最近在折腾一个内部协作工具&#xff0c;需要集成一个稳定、可控且能深度定制的即时通讯模块。市面上成熟的IM SDK很多&#xff0c;但要么是黑盒&#xff0c;出了问题排查困难&#xff1b;要么是功能臃肿&#xff0…...

微信消息自动转发终极指南:5分钟实现跨群智能消息同步

微信消息自动转发终极指南&#xff1a;5分钟实现跨群智能消息同步 【免费下载链接】wechat-forwarding 在微信群之间转发消息 项目地址: https://gitcode.com/gh_mirrors/we/wechat-forwarding 在微信群管理和协作场景中&#xff0c;消息的自动转发与同步是提升效率的关…...

深入浅出MCP:从零开始的完整学习指南(保姆级教程)

手把手带你理解MCP是什么、怎么用、如何开发&#xff0c;每个步骤都有详细说明 写在前面 很多朋友看完MCP的介绍还是一头雾水&#xff1a;“这到底是什么&#xff1f;跟我有什么关系&#xff1f;我该怎么用&#xff1f;” 别急&#xff0c;这篇文章我会用最通俗的方式&#x…...

离线AI教育工具开发实战:模型轻量化、边缘计算与五大应用场景

1. 项目概述&#xff1a;当AI导师走进离线课堂“每个学生都值得拥有一位AI导师”——这个想法听起来很美好&#xff0c;但在全球范围内&#xff0c;一个残酷的现实是&#xff1a;稳定、高速的网络连接并非理所当然。在许多乡村学校、资源匮乏的地区&#xff0c;甚至在城市里信号…...

计算机视觉入门:从OpenCV到PyTorch的实践指南

1. 项目概述&#xff1a;从“萌芽”到“入行”的视觉之旅 “对计算机视觉的萌芽迷恋”——这个标题精准地捕捉了无数技术爱好者&#xff0c;包括我自己&#xff0c;最初踏入这个领域时的心路历程。它描述的是一种状态&#xff1a;你或许被一张AI生成的艺术图片所震撼&#xff…...

别再复制粘贴了!手把手教你用MATLAB/Simulink把低通滤波器写成C代码(附差分方程推导避坑点)

从MATLAB到嵌入式C&#xff1a;工业级低通滤波器实现全解析 在电机控制、信号处理等嵌入式应用中&#xff0c;低通滤波器的实现质量直接影响系统性能。许多工程师习惯直接复制现成代码&#xff0c;却常遭遇数值不稳定、相位失真或计算效率低下等问题。本文将彻底拆解从S域传递函…...

常见的 17 种 RAG 方案解析

近年来&#xff0c;随着大语言模型&#xff08;LLM&#xff09;的广泛应用&#xff0c;检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;RAG&#xff09;系统逐渐成为连接私有知识库与智能问答的核心架构。RAG 不仅弥补了大模型在实时性与事实性上的不足&a…...

5分钟掌握飞书文档高效转换:开源浏览器扩展的完整解决方案

5分钟掌握飞书文档高效转换&#xff1a;开源浏览器扩展的完整解决方案 【免费下载链接】cloud-document-converter Convert Lark Doc to Markdown 项目地址: https://gitcode.com/gh_mirrors/cl/cloud-document-converter 还在为飞书文档格式转换而头疼吗&#xff1f;复…...

3步终极指南:用开源TCC-G15彻底解决Dell G15散热难题

3步终极指南&#xff1a;用开源TCC-G15彻底解决Dell G15散热难题 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否正在为Dell G15笔记本的过热问题而烦恼…...

工程师幽默:从EE Times标题竞赛看技术文化表达与沟通艺术

1. 从“Wizard of Woz”看工程师文化的幽默表达看到“Wizard of Woz”这个标题&#xff0c;很多老电子工程师或硅谷历史爱好者大概会心一笑。这显然是在玩一个经典的双关梗——“Wizard of Oz”&#xff08;绿野仙踪&#xff09;和“Woz”&#xff08;史蒂夫沃兹尼亚克&#xf…...