【word转pdf】【最新版本jar】Java使用aspose-words实现word文档转pdf

【aspose-words-22.12-jdk17.jar】word文档转pdf

  • 前置工作
    • 1、下载依赖
    • 2、安装依赖到本地仓库
  • 项目
    • 1、配置pom.xml
    • 2、配置许可码文件(不配置会有水印)
    • 3、工具类
    • 4、效果
  • 踩坑
    • 1、pdf乱码
    • 2、word中带有图片转换

前置工作

1、下载依赖

通过百度网盘分享的文件:aspose-words-22.12-jdk17.jar
链接:https://pan.baidu.com/s/137_fNgHCKSSEqcavWGehtA?pwd=2xoe
提取码:2xoe
在这里插入图片描述

2、安装依赖到本地仓库

xxxxxxxxxx = jar下载之后的目录

 mvn install:install-file -DgroupId=com.aspose -DartifactId=aspose-words -Dversion=15.8.0 -Dpackaging=jar  -Dfile="F:\java\xxxxxxxxxx\aspose-words-15.8.0-jdk16.jar"

在这里插入图片描述

项目

1、配置pom.xml

		<!-- word转pdf  --><dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>15.8.0</version></dependency>

2、配置许可码文件(不配置会有水印)

在resource路径下配置license.xml文件


<?xml version="1.0" encoding="UTF-8" ?>
<License>
<Data><Products><Product>Aspose.Total for Java</Product><Product>Aspose.Words for Java</Product></Products><EditionType>Enterprise</EditionType><SubscriptionExpiry>20991231</SubscriptionExpiry><LicenseExpiry>20991231</LicenseExpiry><SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
</Data>
<Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
</License>

在这里插入图片描述

3、工具类

package xxx.xxx.xx;import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.modules.online.config.exception.BusinessException;import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;/*** 使用Aspose将Word转换为PDF的工具类* 注意:需要在resource路径下配置license.xml文件*/
@Slf4j
public class Word2PdfUtil {public static void main(String[] args) {String inputPath = "F:\\opt\\upFiles\\2024-07-24\\2024072411362566_1721792185072.docx";String outputPath = "C:\\Users\\123\\Desktop\\1\\667\\bbb.pdf";try {doc2pdf(inputPath, outputPath);} catch (BusinessException e) {e.printStackTrace();}}/*** 将Word文档转换为PDF** @param inPath  输入的Word文件路径* @param outPath 输出的PDF文件路径*/public static void doc2pdf(String inPath, String outPath) throws BusinessException {// 如果未获取到许可证,则抛出业务异常if (!getLicense()) {throw new BusinessException("未配置许可证!");}try (FileOutputStream os = new FileOutputStream(outPath)) {long startTime = System.currentTimeMillis();// 要转换的Word文档Document doc = new Document(inPath);// 保存为PDF格式doc.save(os, SaveFormat.PDF);log.info("PDF转换完成,耗时:{}ms,输出路径:{}", System.currentTimeMillis() - startTime, outPath);} catch (Exception e) {e.printStackTrace();}}public static ByteArrayOutputStream doc2pdfByteArrayOutputStream(InputStream inputStream)  {// 如果未获取到许可证,则抛出业务异常if (!getLicense()) {throw new JeecgBootException("未配置许可证!");}try {long startTime = System.currentTimeMillis();// 要转换的Word文档Document doc = new Document(inputStream);ByteArrayOutputStream bao = new ByteArrayOutputStream();doc.save(bao, SaveFormat.PDF);log.info("PDF转换完成,耗时:{}ms", System.currentTimeMillis() - startTime);return bao;} catch (Exception e) {e.printStackTrace();}return null;}/*** 获取Aspose的许可证* 如果未获取则转换的pdf带有水印** @return 是否成功获取许可证*/public static boolean getLicense() {boolean result = false;// license.xml文件应放在resource路径下try (InputStream is = Word2PdfUtil.class.getClassLoader().getResourceAsStream("license.xml");) {License license = new License();license.setLicense(is);result = true;} catch (Exception e) {e.printStackTrace();}return result;}}

4、效果

在这里插入图片描述

踩坑

1、pdf乱码

将win机器的c:\windows\fonts目录下的全部文件拷贝到生产服务器字体安装目录下,然后执行以下命令更新字体缓存

# 创建目录,将win机器的c:\windows\fonts目录下的全部文件拷贝到此目录下
mkdir mkdir /usr/share/fonts/win
cd /usr/share/fonts 
sudo fc-cache -fv
# 执行命令让字体生效
source /etc/profile

在这里插入图片描述

2、word中带有图片转换

word中如果有jpg格式的图片,需要转换格式成 png

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

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

相关文章

Docker Desktop安装

0 Preface/Foreward 0.1 参考文档 Overview of Docker Desktop | Docker Docs &#xff08;Docker Desktop使用手册&#xff09; 0.1.1 Docker Dashboard Before going any further, we want to highlight the Docker Dashboard, which gives you a quick view of the cont…

vue3+element-plus 实现动态菜单和动态路由的渲染

在 Vue.js 中&#xff0c;使用 Vue Router 管理路由数据&#xff0c;并将其用于渲染 el-menu&#xff08;Element UI 的菜单组件&#xff09;通常涉及以下几个步骤&#xff1a; 定义路由元数据&#xff1a; 在你的路由配置中&#xff0c;为每个路由项添加 meta 字段&#xff0c…

RAG vs 微调:大模型知识的进化之路

2024年&#xff0c;大模型应用落地迎来全面提速。越来越多的企业在加大对大模型的投入&#xff0c;抢抓变革机遇&#xff0c;加速应用落地。大模型应用落地绕不开的两个关键词“RAG”和“微调”。那么什么是RAG&#xff1f;什么是大模型微调&#xff1f;大模型项目建设中RAG和微…

redis的使用场景和持久化方式

redis的使用场景 热点数据的缓存。热点&#xff1a;频繁读取的数据。限时任务的操作&#xff1a;短信验证码。完成session共享的问题完成分布式锁。 redis的持久化方式 什么是持久化&#xff1a;把内存中的数据存储到磁盘的过程&#xff0c;同时也可以把磁盘中的数据加载到内存…

基于Jeecgboot3.6.3的vue3版本前后端分离的流程管理平台

声明一下&#xff1a;因为这个项目license问题无法开源&#xff0c;更多技术支持与服务联系本人或加入我的知识星球提供一些技术服务。 初步完成了基于jeecgboot3.6.3的vue3版本的前后端流程管理平台&#xff0c;基于flowable6.8.1&#xff0c;同时支持bpmn流程设计器与仿钉钉流…

IT程序员的雷区都有哪些?你踩了哪些?

软件行业的工作经验和从事这个行业的工作年限直接相关。但从事这项工作的年限并不一定代表获得了相同年限的工作经验。 根据开发人员的习惯可以非常明显地分辨出谁更专业谁更业余。深入剖析下业余程序开发人员的种种表现&#xff0c;每个程序开发人员都应该引以为戒&#xff0…

怎样在 Nginx 中配置基于请求客户端屏幕尺寸的路由?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; 文章目录 怎样在 Nginx 中配置基于请求客户端屏幕尺寸的路由&#xff1f;一、为什么要基于屏幕尺寸进行路由&#xff1f;二、准备工作三、获取客户端屏幕尺寸信息四、配置…

经纬恒润与奇瑞汽车签订新能源项目重点供应商合作协议,共同开启合作新篇章

近日&#xff0c;2024年国家级芜湖经开区汽车零部件生态大会成功举行&#xff0c;经纬恒润受邀出席&#xff0c;与行业各伙伴齐聚经开区&#xff0c;同绘发展蓝图&#xff0c;助力经开区汽车产业高质量发展。会上&#xff0c;经纬恒润与奇瑞汽车签署合作协议&#xff0c;成为奇…

el-image预览图片点击遮盖处关闭预览

预览关闭按钮不明显 解决方式&#xff1a; 1.修改按钮样式明显点&#xff1a; //el-image 添加自定义类名&#xff0c;下文【test-image】代指 .test-image .el-icon-circle-close{ color:#fff; font-size:20px; ...改成很明显的样式 }2.使用事件监听&#xff0c;监听当前遮…

npm下载pnpm

一、提供node_global和node_cache的文件夹 若不存在&#xff0c;可自行新建文件夹 二、配置环境变量 配置NODE_PATH变量&#xff1a; 配置Path变量&#xff1a; 三、执行cmd指令 npm config set prefix "D:\Configure\nodejs\node_global" npm config set cache &…

Redis的缓存问题:缓存穿透、缓存击穿和缓存雪崩

目录 一、缓存穿透 1、问题描述 2、解决方案 二、缓存击穿 1、问题描述 2、解决方案 三、缓存雪崩 1、问题描述 2、解决方案 3、雪崩案例 一、缓存穿透 1、问题描述 缓存穿透指的是⼤量请求的 key根本不存在于缓存中&#xff0c;每次针对此key的请求从缓存获取不到…

单证不一致清关难题 | 国际贸易综合服务平台 | 箱讯科技

什么是单证一致&#xff1f; 单证一致出口方所提供的所有单据要严格符合进口方开证银行所开信用证的要求&#xff0c;或者说出口方制作和提供的所有与本项货物买卖有关的单据&#xff0c;与进口方申请开立的信用证对单据的要求完全吻合&#xff0c;没有矛盾。 添加图片注释&am…

springboot整合 knife4j 接口文档

第一步&#xff1a;引入依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.4.0</version></dependency> 第二步&#xff1a;写入配置 方…

前端文件下载word乱码问题

记录一次word下载乱码问题&#xff1a; 用的请求是axios库&#xff0c;然后用Blob去接收二进制文件 思路&#xff1a;现在的解决办法有以下几种&#xff0c;看看是对应哪种&#xff0c;可以尝试解决 1.将响应类型设为blob&#xff0c;这也是最重要的&#xff0c;如果没有解决…

《梦醒蝶飞:释放Excel函数与公式的力量》18.1 图表类型与设计

第18章&#xff1a;创建图表和数据可视化 18.1 图表类型与设计 Excel提供了多种图表类型&#xff0c;帮助用户以直观的方式展示数据。选择合适的图表类型和设计可以显著提高数据的可读性和理解度。以下将介绍常见的图表类型及其应用&#xff0c;并通过具体案例进行说明。 18.…

C语言 ——— 函数指针数组的讲解及其用法

目录 前言 函数指针数组的定义 函数指针数组的使用 前言 数组是存放一组相同类型数据的存储空间 关于指针数组的知识请见&#xff1a;C语言 ——— 指针数组 & 指针数组模拟二维整型数组-CSDN博客 那么要将多个函数的地址存储到数组中&#xff0c;这个数组该如何定义…

FreeSWITCH 1.10.10 简单图形化界面26-在网页上播放SIP设备视频

​ FreeSWITCH 1.10.10 简单图形化界面26-在网页上播放SIP设备视频 1、前言2、大概流程3、测试环境4、安装流媒体服务器5、设置流媒体服务器接口6、简单写个web接口7、测试一下1、web播放在线播放器1在线播放器2本地video控件 2、vlc播放vlc播放rtmpvlc播放rtsp 8、总结 1、前…

C语言数据结构课设:基于EasyX前端界面的飞机订票系统

数据结构课程设计说明书 学 院、系&#xff1a; 软件学院 专 业&#xff1a; 软件工程 班 级&#xff1a; 学 生 姓 名&#xff1a; 范 学 号&#xff1a; 设 计 题 目&#xff1a; 飞机订票系统 起 迄 日 期: 2024年6月18日~ 20…

没有51基础,能不能学好STM32?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「STM32的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 我们通常准备攻读一本大部…

宠物医院管理系统视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…