小猴子先生

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、前言:我在做文件转换过程中遇到的一些坑,在这里记录下,因为项目需求,需要使用html转pdf,由于itext转换质量问题(一些Css属性不起作用),导致只能通过word文件作为跳板来转换到pdf文件,word转pdf使用的是apache的poi包,在这里不详细赘述该转换过程,有需要的朋友可以去网络搜索,有很多文章做讲解,下面进入正题。。。。

 

二、版本说明:首先word转pdf是在window机器上进行的,转换之前的环境需要安装 windows office ,版本就不限制了,我用的office 2007,另一台电脑上用的是office 2010,都可以,在word转换pdf前需要装一个插件,如果没有的请戳链接:

http://r.office.microsoft.com/r/rlidMSAddinPDFXPS

 

三、查看是否安装插件:

1、新建一个word文件,点击另存为,如下图显示:“查找其他文件格式的加载项” 表示没有安装好插件

 

 

2、点击 “查找其他文件格式的加载项”,进入到下面的页面,点击 “安装Publish并将其作用Microsoft的 PDF或 XPS加载项” 进入到下载页面

 

3、点击 第一个选项会跳转到网页地址,直接提供该链接:http://r.office.microsoft.com/r/rlidMSAddinPDFXPS

 

4、下载第一个就是我们需要的插件了,下载好后直接安装,为了不产生不必要的问题,请使用默认安装路径

 

5、安装好以后再次转换PDF操作就是下面的样子,就代表插件安装成功了

 

 

四、环境设置好了,我们需要 程序执行用到的资源(提示:把下面的资源文件放到工程库中,和jar包在一起就OK)

1、用到的jar包:jacob-1.18.jar

2、通过java程序调用windows应用的库文件

jacob.dll

3、把下面的文件放到  C:\Windows\System32 文件中,根据电脑的架构放一个文件就OK,为了保险我把两个都放进去了,哈哈

jacob-1.18-M2-x64.dll

jacob-1.18-M2-x86.dll

 

五、文件处理好了,可以执行自己的转换程序了,但是在执行过程中又遇到问题:com.jacob.com.ComFailException: VariantChangeType failed

 

六、下面说一下这个问题的解决办法:(来源:http://blog.csdn.net/toubennuhai/article/details/53055431

第一步:

 Windows Vista/2008改变了COM对象默认的交互方式为“非交互”型的。Console启动本身支持应用交互,但service模式下就不行了。所以需要修改word DCOM默认的标识,改为“交互式用户”模式,即可正常调用了。
   按照以下步骤修改后再测service模式下试转Word即可成功:
   1) 运行命令: mmc comexp.msc -32
   2) 找到:组件服务>计算机>我的电脑>DCOM组件>Microsoft Word 97-2003 文档;
   3) 右键点击,选择属性,修改标识为“交互式用户”,点击“确定”;

第二步:

创建一个 Desktop 文件夹,创建好之后的路径如下(我一直在疑惑为什么要创建这样一个文件夹,没搞明白,如果有清楚的伙伴欢迎留言,大家共同探讨)

C:\Windows\System32\config\systemprofile\Desktop

 

至此所有的问题解决完了

 

posted on 2018-02-24 17:15  小猴子先生  阅读(1065)  评论(0编辑  收藏  举报