使用 com.jacob.activeX 库实现 Word 到 PDF

使用 com.jacob.activeX 库实现 Word 到 PDF 的转换涉及到使用 Java 和 Microsoft Office 的 COM 自动化。JACOB(Java COM Bridge)库提供了一个桥接器,允许 Java 代码通过 COM(组件对象模型)与 Windows 应用程序(如 Microsoft Office)进行交互。

以下是一个示例代码,展示如何使用 JACOB 库在 Java 中将 Word 文档转换为 PDF:

1. 添加 JACOB 依赖

首先,确保你的项目中包含了 JACOB 库的依赖。你可以从JACOB 官网下载库文件,并将其添加到你的项目中。

2. 示例代码

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;public class WordToPdfConverter {public static void main(String[] args) {String wordFilePath = "C:\\path\\to\\input.docx"; // Word 文件路径String pdfFilePath = "C:\\path\\to\\output.pdf";  // PDF 文件路径convertWordToPDF(wordFilePath, pdfFilePath);}public static void convertWordToPDF(String src, String dest) {ActiveXComponent app = null;try {app = new ActiveXComponent("Word.Application");app.setProperty("Visible", false);Dispatch docs = app.getProperty("Documents").toDispatch();Dispatch doc = Dispatch.call(docs, "Open", src, false, true).toDispatch();Dispatch.call(doc, "SaveAs", dest, 17); // 17 表示 PDF 格式Dispatch.call(doc, "Close", false);System.out.println("转换完成!");} catch (Exception e) {e.printStackTrace();} finally {if (app != null) {app.invoke("Quit", 0);}}}
}

3. 注意事项

  • 确保你的系统上安装了 Microsoft Word。
  • 确保 JACOB 的 DLL 文件(例如 jacob-1.18-x64.dlljacob-1.18-x86.dll,取决于你的系统架构)被正确地放置在 Java 应用程序能够访问的位置,通常是项目的根目录或系统的 PATH 环境变量中。
  • 代码中的文件路径需要根据实际情况进行调整。
  • 由于 JACOB 依赖于 COM,这个方法只能在 Windows 系统上工作。
  • 运行此代码可能需要具有管理员权限,特别是在对 COM 对象进行操作时。

使用 JACOB 进行 Word 到 PDF 的转换是一个相对复杂的过程,需要正确配置环境和处理 COM 对象。此外,这种方法强烈依赖于外部应用程序(Microsoft Word),这可能会影响应用程序的可移植性和稳定性。

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

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

相关文章

vue2项目修改编译巨慢

前言:我们的一个vue项目在给新同事后他说编译贼慢,一个小修改项5分钟才能自动编译成功,我把项目放到新电脑上也巨慢,升级了nodejs好使了一些,但还是慢,最后引入webpack后巨快, 在项目的package…

redis实战篇(2)

优惠卷秒杀 通过本章节,我们可以学会Redis的计数器功能, 结合Lua完成高性能的redis操作,同时学会Redis分布式锁的原理,包括Redis的三种消息队列 3、优惠卷秒杀 3.1 -全局唯一ID 每个店铺都可以发布优惠券: 当用户抢…

linux课程第一课------命令的简单的介绍

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

内网离线安装elasticsearch、kibana

一、软件获取 elastic kibana 二、elastic安装 解压安装即可提前可改下配置文件,不然可能会出现内存分配错误 三、运行elastic 需要调试看信息的话,可在cmd窗口运行bat,就会打印输出信息了。 生产kibana token bin\elasticsearch-create…

LuatOS-SOC接口文档(air780E)--otp - OTP操作库

otp.read(zone, offset, len)# 读取指定OTP区域读取数据 参数 传入值类型 解释 int 区域, 通常为0/1/2/3, 与具体硬件相关 int 偏移量 int 读取长度, 单位字节, 必须是4的倍数, 不能超过4096字节 返回值 返回值类型 解释 string 成功返回字符串, 否则返回nil 例…

交换机如何配置BGP协议

环境: 华为交换机 华三交换机 问题描述: 交换机如何配置BGP协议 解决方案: 华三交换机上配置案例 1.配置BGP协议,可以按照以下步骤进行: 登录交换机:使用SSH、Telnet或控制台等方式登录到华三交换…

简单理解路由重分发(用两路由器来理解)

相关命令: default-information originate //*重分发默认路由 redistribute rip subnets //*重分发rip redistribute ospf 1 metric 3 //*重分发ospf(其中:1是ospf进程id 3是跳数) redistribute sta…

main.js 中的 render函数

按照之前的单组件文件中的写法&#xff0c;我们的写法应该是这样的 import App from ./App.vuenew Vue({el: #app,templete: <App></App>,components: {App}, }) 1、定义el根节点。2、注册App组件。3、渲染 templete 模板 但是在脚手架工程中&#xff0c;他是这…

Java 之拼图小游戏

声明 此项目为java基础的阶段项目,此项目涉及了基础语法,面向对象等知识,具体像语法基础如判断,循环,数组,字符串,集合等…; 面向对象如封装,继承,多态,抽象类,接口,内部类等等…都有涉及。此项目涉及的内容比较多,作为初学者可以很好的将前面的知识串起来。此项目拿来练手以及…

汇总区间问题

给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b] 应该按…

飞书开发学习笔记(七)-添加机器人及发送webhook消息

飞书开发学习笔记(七)-添加机器人及发送webhook消息 一.添加飞书机器人 1.1 添加飞书机器人过程 在群的右上角点击折叠按键…选择 设置 群机器人中选择 添加机器人 选择自定义机器人&#xff0c;通过webhook发送消息 弹出的信息中有webhook地址&#xff0c;选择复制。 安…

电子学会C/C++编程等级考试2021年09月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:数字判断 输入一个字符,如何输入的字符是数字,输出yes,否则输出no 输入 一个字符 输出 如何输入的字符是数字,输出yes,否则输出no 样例1输入 样例1输入 5样例1输出 yes样例2输入 A 样例2输出 …

MySQL中全文索引和普通索引的区别

MySQL中的全文索引&#xff08;Full-Text Index&#xff09;和普通索引&#xff08;比如B-Tree索引&#xff09;是为了提高查询效率而设计的&#xff0c;但它们适用于不同的场景和查询类型。 普通索引&#xff08;如B-Tree索引&#xff09; 适用场景&#xff1a;普通索引适用于…

Ubuntu搭建FTP服务

在Ubuntu上配置FTP服务通常使用vsftpd&#xff08;Very Secure FTP Daemon&#xff09;是一种常见的选择。以下是在Ubuntu上配置vsftpd的基本步骤&#xff1a; 步骤 1&#xff1a;安装vsftpd 打开终端&#xff0c;并运行以下命令以安装vsftpd&#xff1a; sudo apt-get upda…

【算法】算法题-20231118

这里写目录标题 一、16.17. 连续数列二、合并两个有序数组&#xff08;力扣88&#xff09;三、存在重复元素&#xff08;217&#xff09;四、有效的字母异位词&#xff08;242&#xff09; 一、16.17. 连续数列 简单 给定一个整数数组&#xff0c;找出总和最大的连续数列&…

golang学习笔记——编写 FizzBuzz 程序

编写 FizzBuzz 程序 首先&#xff0c;编写一个用于输出数字&#xff08;1 到 100&#xff09;的程序&#xff0c;其中有以下变化&#xff1a; 如果数字可被 3 整除&#xff0c;则输出 Fizz。 如果数字可被 5 整除&#xff0c;则输出 Buzz。 如果数字可同时被 3 和 5 整除&…

暖阳脚本_ 定制企业软件开发的4个趋势:AI、RPA、云应用、边缘计算

根据 Statista 的统计数据显示&#xff0c;企业级软件市场在全球范围内占据了领先地位&#xff0c;预测到2028年&#xff0c;市场规模将接近3760亿美元。企业应用软件市场的稳健增长&#xff0c;甚至在经济不景气的时候也能持续&#xff0c;这充分表明软件解决方案对于提升企业…

Git新建分支

修改代码之Git策略思考&#xff1a; 有三种办法&#xff1a; 需要在主分支上新建一个分支&#xff0c;不合并新建版本。其实也是先新建一个分支&#xff0c;然后合并到主分支&#xff0c;再删除分支。直接新建远程仓库。 考虑&#xff0c;3&#xff09;最浪费&#xff0c;其…

直接插入排序

一.介绍. 其基本思想为数据元素被已经放入一个已经排好的有序数组中&#xff0c;现插入一个元素进入该数组&#xff0c;按顺序&#xff08;即大小关系&#xff09;放进适当位置&#xff0c;并且其后面的元素都向后移动移位。 如图&#xff1a; 对于上述问题&#xff1a; 代码…

【Java】ExcelWriter自适应宽度工具类(支持中文)

工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…