睿阳知识库 睿阳知识库
首页
  • npm库配置
  • PC端

    • npm常用命令
    • vue问题记录
    • SEO基础知识及优化
    • 禁止别人调试我的前端页面代码
  • 移动端

    • 小程序
    • Risun.js使用说明
  • Java

    • Maven库配置
    • RSP开发框架
    • RSP框架插件
  • .NET

    • Nuget库配置
  • Python

    • Pypi库配置
  • 常见问题

    • Word转Pdf字体错乱
    • 使用Jacob进行Word导出PDF
  • 自动部署
  • 前端带路径
  • Linux

    • 应用部署
  • Windows

    • 应用部署
  • 视频监控
  • MySQL系列~
  • 应用高可用
  • 静态代码扫描
  • OpenSSH版本升级
  • 区块链~
  • 软件过程文档目录
  • 著作权申请须知及申报示例
  • 项目申报技巧
  • 项目竣工资料清单
  • 科技项目申报流程及注意事项
  • 初级职称申报
  • 产品需求文档基础知识
  • 产品经理需了解的技术知识
  • 墨刀原型设计指南
  • 文档规范
  • 文档规范
  • 投标工作总结(一)
  • 科技项目申报心得体会
  • 数字孪生
  • AI
  • RSP基础平台
  • RMCloud
  • 区块链
  • 网络态势感知
  • 国产化
  • 数据湖
  • 贡献度
  • 文档编写说明
  • Markdown教程
工作链接
首页
  • npm库配置
  • PC端

    • npm常用命令
    • vue问题记录
    • SEO基础知识及优化
    • 禁止别人调试我的前端页面代码
  • 移动端

    • 小程序
    • Risun.js使用说明
  • Java

    • Maven库配置
    • RSP开发框架
    • RSP框架插件
  • .NET

    • Nuget库配置
  • Python

    • Pypi库配置
  • 常见问题

    • Word转Pdf字体错乱
    • 使用Jacob进行Word导出PDF
  • 自动部署
  • 前端带路径
  • Linux

    • 应用部署
  • Windows

    • 应用部署
  • 视频监控
  • MySQL系列~
  • 应用高可用
  • 静态代码扫描
  • OpenSSH版本升级
  • 区块链~
  • 软件过程文档目录
  • 著作权申请须知及申报示例
  • 项目申报技巧
  • 项目竣工资料清单
  • 科技项目申报流程及注意事项
  • 初级职称申报
  • 产品需求文档基础知识
  • 产品经理需了解的技术知识
  • 墨刀原型设计指南
  • 文档规范
  • 文档规范
  • 投标工作总结(一)
  • 科技项目申报心得体会
  • 数字孪生
  • AI
  • RSP基础平台
  • RMCloud
  • 区块链
  • 网络态势感知
  • 国产化
  • 数据湖
  • 贡献度
  • 文档编写说明
  • Markdown教程
工作链接
  • Java

  • .NET

  • Python

  • 常见问题

    • Word转Pdf字体错乱
    • 使用Jacob进行Word导出PDF
      • 一. 概述
      • 二. Word转Pdf
      • 1.项目中引入jacob,如下:
      • 2.代码如下:
      • 三. 常见问题
      • 四. 参考资料
  • 后端
  • 常见问题
高小兵
2023-08-28
目录

使用Jacob进行Word导出PDF

# 一. 概述

基于jacob的word转pdf

# 二. Word转Pdf

# 1.项目中引入jacob,如下:

<dependency>
      <groupId>com.jacob</groupId>
      <artifactId>jacob</artifactId>
      <version>1.20</version>
      <scope>system</scope>
  <systemPath>${project.basedir}/src/main/lib/jacob.jar</systemPath>
 </dependency>

# 2.代码如下:

      public static String wordToPdfPath(String wordFile, String fileName) {
       // 获取资源路存储路径
       //String localPath = "D:\\ruoyi\\kjxm-pl\\uploadPath";
       String localPath = RuoYiConfig.getProfile();
       String formatSuffix = ".pdf";
       // 拼接后的文件名
       fileName = fileName + formatSuffix;
       String pdfPath = localPath + File.separator + "upload" + File.separator + fileName;
       ActiveXComponent app = null;
       // 开始时间
       log.info("转换开始时间:{}", DateUtils.getDate());
       try {
           // 打开word
           app = new ActiveXComponent("Word.Application");
           // 获得word中所有打开的文档
           Dispatch documents = app.getProperty("Documents").toDispatch();

           // 打开文档
           Dispatch document = Dispatch.call(documents, "Open", wordFile, false, true).toDispatch();
           // 如果文件存在的话,不会覆盖,会直接报错,所以我们需要判断文件是否存在
           File target = new File(pdfPath);
           if (target.exists()) {
               target.delete();
           }
           log.info("打开文档: ", DateUtils.getDate());
           Dispatch.call(document, "SaveAs", pdfPath, 17);
           // 关闭文档
           Dispatch.call(document, "Close", false);
           log.info("另存为: ", DateUtils.getDate());
       } catch (Exception e) {
           e.printStackTrace();
           log.info("转换失败:", e.getMessage());
       } finally {
           // 关闭office
           if(app != null) {
               app.invoke("Quit", 0);
           }
           log.info("关闭office");
           //ComThread.Release();
       }
       return pdfPath;
   }

   public static void main(String[] args) {
       String wordFile="D:\\..\\uploadPath\\download\\word.doc";
       String pdf="newpdf";
       System.out.println(wordToPdfPath(wordFile,pdf));
   }

# 三. 常见问题

  • 解决jacob 部署到服务器上后无法进行文档转换的问题
  1. windows电脑安装word。

  2. com.jacob.com.ComFailException: VariantChangeType failed,解决方案如下:

  • 在C:\Windows\System32\config\systemprofile下创建文件夹Desktop;
  1. 计算机的com交互组件没有启用. 解决方案如下:
  • (1) 运行命令: mmc comexp.msc -32
  • (2) 找到:组建服务>计算器>我的计算机>DCOM组件>Microsoft Word 97-2003 文档;
  • (3) 右键点击,选择属性,修改标识为“交互式用户”,点击“确定”;
  1. 在system32下面放入对应的dll文件,版本跟jacob.jar的版本对应好/

  2. 在C:\Windows\System32目录下添加jacob-1.20-x64.dll

  3. 在C:\Windows\SysWOW64目录下添加jacob-1.20-x64.dll

  4. jacob.jar和jacob.dll目录如下:

  • (1)jacob.jar 放在 C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext目录下 --jacob.jar
  • (2)jacob*.dll 放在 C:\Program Files\Java\jdk1.8.0_171\jre\bin 目录下--jacob-1.20-x64.dll
  1. 项目中jacob位置
  1. 其中7,8中的jacob版本一致

# 四. 参考资料

  • https://www.cnblogs.com/gj1990/p/7991889.html
Word转Pdf字体错乱

← Word转Pdf字体错乱

最近更新
01
vue问题记录
10-11
02
RSP进度
10-09
03
贡献度
09-28
更多文章>
Copyright © 2014-2025 甘肃睿阳科技有限公司 陇ICP备15001783-1号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式