首页 > 其他分享 >使用 com.jacob.activeX 库实现 Word 到 PDF

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

时间:2023-12-11 10:31:56浏览次数:37  
标签:Word activeX app Dispatch JACOB jacob com


使用 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),这可能会影响应用程序的可移植性和稳定性。


标签:Word,activeX,app,Dispatch,JACOB,jacob,com
From: https://blog.51cto.com/u_13171517/8768511

相关文章

  • "firmwarepasswd": MacOS Firmware Password Management: CHECK and DELETE Macbook P
    Abaels-MacBook-Pro:~abaelhe$suPassword:bash-3.2#firmwarepasswd-checkPasswordEnabled:Yesbash-3.2#firmwarepasswd-deleteDeleteFirmwarePasswordEnterpassword:PasswordremovedNOTE:MustrestartbeforechangeswilltakeeffectUsage:firmw......
  • uva10391 复合词 Compound Words
    原题链接 复合词CompoundWords-洛谷|计算机科学教育新生态(luogu.com.cn)这道题我的第一想法是二重循环遍历所有组合,但结合120000的数据量知晓此方法肯定超时。那么解法二:先用map存储所有的单词,再遍历所有的单词(假如为S),对S进行分解得到Sa和Sb,然后判断Sa和Sb在不在map中(......
  • word表格美化设计
    一、美化表格 文字内容如上;添加标题栏,增加阅读感选中表格上栏,然后插入一行,并合并单元格,写上文字:调整整个表格大小,使其延伸到整个word版面选中整个表格:右键--自动调整---根据窗格自动调整内容;使左右占满整个版面视图---单页--然后鼠标下拉表格进行调节表格......
  • wordpress整合 Prism.js实现代码高亮 切图网自用
    Prism.js是一个简约漂亮的代码高亮插件,就冲简单好用就值得一用,如何把它整合到wordpress,附代码,也是切图网自己再用的。代码添加到主题的functions.php中//自定义代码高亮按钮functionappthemes_add_quicktags(){if(wp_script_is('quicktags')){?><s......
  • sensitive word 敏感词(脏词) 如何忽略无意义的字符?达到更好的过滤效果?
    忽略字符说明我们的敏感词一般都是比较连续的,比如傻帽那就有大聪明发现,可以在中间加一些字符,比如【傻!@#$帽】跳过检测,但是骂人等攻击力不减。那么,如何应对这些类似的场景呢?我们可以指定特殊字符的跳过集合,忽略掉这些无意义的字符即可。v0.11.0开始支持例子其中charIgn......
  • sensitive word 敏感词(脏词) 如何忽略无意义的字符?达到更好的过滤效果?
    忽略字符说明我们的敏感词一般都是比较连续的,比如傻帽那就有大聪明发现,可以在中间加一些字符,比如【傻!@#$帽】跳过检测,但是骂人等攻击力不减。那么,如何应对这些类似的场景呢?我们可以指定特殊字符的跳过集合,忽略掉这些无意义的字符即可。v0.11.0开始支持例子其中charIg......
  • pageoffice 6 实现数据区域填充(插入文本、图片、word、excel等)
    在实际的Word文档开发中,经常需要自动填充数据到Word模板中,以生成动态的Word文档。例如:1、我们可以根据数据库表中已保存的个人信息,设计好一个简历模板docx文件,然后通过代码将这些个人信息填充到Word模板中,从而自动生成一份简历。2、如果需要将图片插入到Word模板指定位置,比如......
  • 网页在线安全浏览Office Word文档,只读打开/禁止编辑/禁止复制/禁止另存/禁止打印/禁止
    在企业OA系统或者在线协作办公场景中,有一些合同公文或者客户数据等重要文档需要我们在线共享给其他人,但是我们只希望其他人只能预览阅读文档,不能随便编辑修改文档,也禁止复制共享Word文档的内容到其他文档或者编辑器,不能将共享文件另存为本地文件夹,并且禁止用户打印该Word文档,那么......
  • word-开发者工具的使用
    一、制作一个文档,如下所示,空白的区域没有内容时,提示用户步骤:1、开发者工具---选择文字区域-----设计模式----根据输入相对应提示文字, 2、电话一栏:选中后,ctrl+鼠标可以复制一份,选择设计模式修改提示文字即可3、性别;选框号带√按钮,选择属性----选择选中标记和未选中标记的状......
  • HarmonyOS第一课,配置DevEcoStudio,运行"哈喽word"
    1下载DevEcoStudio工具下载地址根据自己电脑的os和芯片版本,下载对应的安装包,顺便也把其他2个开发者工具也下载下来了2运行DevEcoStudio,并配置相关环境变量如果自检有不满足的环境配置,可以在线安装至指定文件夹,强迫症请准备好指定路径存放npm及ohpm安装路径安装HarmonyOS-Sd......