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

java中word快速转pdf

java中word快速转pdf

网上其他方法转pdf要不转的太慢,要不就是损失格式,故而留下此方法留作备用。


文章目录

  • java中word快速转pdf
  • 一、依赖
  • 二、依赖包
  • 三、代码


一、依赖

<dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>21.6</version><classifier>jdk16</classifier>
</dependency>

二、依赖包

请将aspose.7z文件解压,将解压后文件放到maven的com目录下。

网盘下载:

通过网盘分享的文件:word快速转pdf
链接: https://pan.baidu.com/s/1XXHnqy9FY3oA8SwiIgd4RA?pwd=1234 提取码: 1234 
--来自百度网盘超级会员v6的分享

csdn下载:

https://download.csdn.net/download/weixin_44399264/90968983

三、代码

package com.tdxx.common.utils;import com.aspose.words.Document;
import com.aspose.words.SaveFormat;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.lang.reflect.Modifier;public class DocGenUtil {/*** 将word文档转换为pdf,并以InputStream形式返回** @param inputStream 输入的word文档流* @return 转换后的pdf文档流*/public static InputStream wordConvertPdf(InputStream inputStream) {Document doc = null;ByteArrayOutputStream outputStream = new ByteArrayOutputStream();try {// 加载输入流中的Word文档removeWaterMark(); // 移除水印(如果需要)doc = new Document(inputStream);// 将Word文档保存为PDF格式到ByteArrayOutputStreamdoc.save(outputStream, SaveFormat.PDF);// 返回生成的PDF文档流return new ByteArrayInputStream(outputStream.toByteArray());} catch (Exception e) {throw new RuntimeException("Failed to convert Word to PDF", e);} finally {// 确保关闭流try {if (inputStream != null) inputStream.close();outputStream.close();} catch (Exception e) {// 忽略关闭流时的异常}}}/*** 将word文档转换成pdf输出到指定目录* @param filePath* @param outFilePath*/public static void wordConvertPdf(String filePath, String outFilePath) {Document doc = null;Path path = Paths.get(filePath);try (InputStream is = Files.newInputStream(path);FileOutputStream os = new FileOutputStream(outFilePath)) {removeWaterMark();doc = new Document(is);doc.save(os, SaveFormat.PDF);} catch (Exception e) {throw new RuntimeException(e);}}/*** 去除软件包工具自带水印(毕竟是收费的,嘿嘿)* 使用反射替换变量* @return*/public static void removeWaterMark() throws Exception {Class<?> aClass = Class.forName("com.aspose.words.zzXyu");java.lang.reflect.Field zzZXG = aClass.getDeclaredField("zzZXG");zzZXG.setAccessible(true);java.lang.reflect.Field modifiersField = zzZXG.getClass().getDeclaredField("modifiers");modifiersField.setAccessible(true);modifiersField.setInt(zzZXG, zzZXG.getModifiers() & ~Modifier.FINAL);zzZXG.set(null,new byte[]{76, 73, 67, 69, 78, 83, 69, 68});}
}
http://www.xdnf.cn/news/13027.html

相关文章:

  • Linux系统:进程间通信-匿名与命名管道
  • 离线语音识别方案分析
  • python3基础语法梳理
  • 行列视:企业数据分析新时代的利器(一)——深度解读与应用场景分析
  • 在Ubuntu中设置开机自动运行(sudo)指令的指南
  • 关于uniapp展示PDF的解决方案
  • UNECE R152——解读自动驾驶相关标准法规(AEB)
  • 论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
  • 2025.06.09【读书笔记】|PromptBio:让生信分析更简单的AI平台
  • 逻辑回归暴力训练预测金融欺诈
  • docker 部署发现spring.profiles.active 问题
  • QT3D学习笔记——圆台、圆锥
  • Xcode 16.2 版本 pod init 报错
  • 关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
  • 【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
  • C++--stack和queue的使用及其模拟实现
  • 【Android】Android 开发 ADB 常用指令
  • FreeRTOS队列
  • CMS内容管理系统的设计与实现:多站点模式的实现
  • React核心概念:State是什么?如何用useState管理组件自己的数据?
  • 总结html标签---表单标签
  • 接地气的方式认识JVM(二)
  • MinIO Docker 部署:仅开放一个端口
  • 数据结构-线性表
  • Fabric V2.5 通用溯源系统——增加图片上传与下载功能
  • 使用LangGraph和LangSmith构建多智能体人工智能系统
  • 【java面试】微服务篇
  • 【中间件】Web服务、消息队列、缓存与微服务治理:Nginx、Kafka、Redis、Nacos 详解
  • CSP-38th
  • ARM SMMUv3 STE表和CD表数据格式分析(三)