jacob配置(tomcat服务调用,主要用于word转pdf)

jacob配置(tomcat服务调用,主要用于word转pdf)

一、前言

开发的软件需要将word转为pdf,上一位负责人(已离职) 使用jacob实现了这一功能。近期需要将该软件部署到客户的内网服务器上,期间在jacob的配置上各种踩坑,下文是踩坑的心路历程及解决办法的整理。

二、配置步骤

1. jacob版本

jacob配置文件下载
我采用的是1.20版本的jacob,需要以下文件jacob-1.20-x64.dll、jacob-1.20-x86.dll、jacob.jar

2. 服务器环境

操作系统 Windows Server 2022 Datacenter
Java版本 1.8

3. 配置环境变量

系统变量Path中添加 jdk\bin 和 jdk\jre\bin

4. 配置Java文件夹

根据操作系统的版本选择 jacob-1.20-x64.dll 或 jacob-1.20-x86.dll 放到 jdk\bin 和 jdk\jre\bin,将 jacob.jar 放到 jdk\jre\lib\ext

5. 配置System32文件夹

将 jacob.jar 放到 C:\Windows\System32

6. 安装Office

我安装的是Office2016版本,安装在C:\Program Files下,确保管理员账户都能访问

7. 配置注册到系统的tomcat服务

打开“服务”,右键“属性”,点击“登录”选项卡,如果知道administrator的密码,直接将登录身份修改为此用户administrator即可。否则,创建一个新的管理员账户,如tomcat,修改登录身份为此用户tomcat,然后重启服务

8. 修改DCOM配置

8-1. 知道administrator密码的情况

WIN+R打开运行输入 ”mmc comexp.msc -32“ ,打开组件服务,DCOM配置中找到 Microsoft Word 97 - 2003 Document ,右键打开属性,配置标识,将运行此应用程序的用户账户改为administrator

8-2. 不知道administrator密码的情况

(1) 登录新创建管理员账户tomcat,为该用户安装office
(2) WIN+R打开运行输入 ”mmc comexp.msc -32“ ,打开组件服务,DCOM配置中找到 Microsoft Word 97 - 2003 Document ,右键打开属性,配置标识,将运行此应用程序的用户账户改为tomcat

三、bug汇总

1. com.jacob.com.ComFailException: Can‘t co-create object

(1) 问题描述:在公司服务器上测试发现,以控制台方式(startup.bat)运行时可以正常通过jacob调用COM组件将word转为pdf,但以服务方式(service.bat)运行时就会报错,无法获取word应用。
(2) 原因分析:startup.bat是以administrator用户身份运行的,而service.bat则以本地服务身份运行,本地服务帐户具有和 Users 用户组成员相同级别的资源和对象访问权。猜测是权限不足导致无法获取到word应用。
(3) 解决办法:将注册到系统的tomcat服务的登录身份改为administrator后重启,然后WIN+R打开运行输入 ”mmc comexp.msc -32“ ,打开组件服务,DCOM配置中找到 Microsoft Word 97 - 2003 Document ,右键打开属性,配置标识,将运行此应用程序的用户账户改为administrator。经测试后,该问题得到解决。

2. com.jacob.com.ComFailException: Can’t map name to dispid: SaveAs

(1) 问题描述:解决了bug之后,确认公司服务器可以转pdf后,信心满满地写了份说明让客户那边的技术员在内网服务器上如法炮制。结果,没有人知道administrator的密码(O__O"…)。于是让他建了个新的管理员账户,用这个账户做配置。配置完后,问题1也不再出现了,但有了新的问题,无法调用SaveAs方法。怀疑过是office安装不完整的问题,让同事过去装了又卸,卸了又装,依然无效。未果,只好在公司服务器上继续折腾,复现bug。在公司服务器上同样创建了个新的管理员账号tomcat,然后修改配置,重启tomcat服务,很好,出现了相同的问题。
(2) 原因分析:依旧是权限的问题,office通过administrator安装在D盘,tomcat账户没有权限使用。登录tomcat用户会发现,根本打不开office
(3) 解决办法:不懂怎么配置用户权限,只好把office卸了,装到C:\Program Files底下。登录tomcat用户,office可以使用了,就在以为一切皆大欢喜之际,测试软件的转pdf功能,出现了新的bug

3. com.jacob.com.ComFailException: VariantChangeType failed

(1) 问题描述:文档转换失败
(2) 原因分析:据说是com的交互功能没有启用。一开始在公司服务器上使用administrator时是不会有这个问题的,但是把配置用户都改成tomcat用户就出现了,猜测是在我安装的office环境下tomcat用户只能以交互方式调用组件,所以com的交互功能必须打开。
(3) 解决办法: 先在C:\Windows\System32\config\systemprofile下创建文件夹Desktop,然后WIN+R打开运行输入 ”mmc comexp.msc -32“ ,打开组件服务,DCOM配置中找到 Microsoft Word 97 - 2003 Document ,右键打开属性,配置标识,将运行此应用程序的用户账户改为交互式用户。改成交互式用户后,tomcat服务的登录身份可以是administrator也可以是tomcat用户,但是本地服务账户(与Users同权)不行,估计还是权限不足,必须是管理员才行。

4. 关闭RDP后,无法访问word的COM组件

(1)原因分析:将Microsoft Word 97 - 2003 Document的标识设置为交互式用户后,必须要有账户登录,如果没有任何用户登录,服务器将不会运行。
(2)解决办法:可以设置自动登录,但是不太安全,没有尝试。登录新创建管理员账户tomcat,为该用户安装office;WIN+R打开运行输入 ”mmc comexp.msc -32“ ,打开组件服务,DCOM配置中找到 Microsoft Word 97 - 2003 Document ,右键打开属性,配置标识,将运行此应用程序的用户账户改为tomcat

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clx_xuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值