• Jacob官方的解释是Java COM Bridge,即java和com组件间的桥梁。
  • 需要注意的是,由于操作Jacob需要使用动态链接库(.dll)文件,所以Jacob仅支持在windows平台使用,Linux无法使用。
  • 使用jacob需要用的jar包,以及jacob.dll文件,也就是上面说到的com组件,博主分享两个版本,一个1.17,一个1.18,本人项目中用的是1.17
    1.17: 点击提取,密码:mwed
    1.18: 点击提取,密码:s4kg

入门了解后,在此说明用法以及博主在服务器端使用时遇到的坑:

1. 首先直接将jar放至lib目录下,将dll文件放至C:\Windows\System32目录下,本地直接测试成功,可以完美实现word,excel,ppt转换成pdf格式。

2. 将项目放至windows服务器后,如果报错找不到dll文件或者类,可通过以下方式解决:

  • 在确保C:\Windows\System32目录页有一份jacob.dll之外,还要在jdk的bin目录下放jacob版本对应的dll,在jdk的jre下的bin也放一份dll
  • 项目中导入相应的jar包后,如果找不到类,可以将jar拷贝一份至jdk\jre\lib\ext下,或者tomcat/lib下,都要尝试一下
  • 最后如果可以正常运行,没有报错,但pdf生成失败,如果不是权限的问题(即写入文件的权限),要在在"C:\Windows\SysWOW64\config\systemprofile"和"C:\Windows\System32\config\systemprofile"这两个路径下创建Desktop文件夹
  • 以上方法都要一步一步的试,出现相应问题找相应方法,不要一上来就把文件拷贝多份放至每个文件夹

相关代码:

public class PDFUtil {private static final int wdFormatPDF = 17;private static final int xlTypePDF = 0;private static final int ppSaveAsPDF = 32;private static final Integer WORD_TO_PDF_OPERAND = 17;private static final Integer PPT_TO_PDF_OPERAND = 32;private static final Integer EXCEL_TO_PDF_OPERAND = 0;public static void main(String[] args) {//path:原文档路径,也可以为一个网络地址//pdfPath为生成的pdf文件路径String path = "F:/test.doc";String pdfPath = "F:/test.pdf";boolean bo = PDFUtil.word2PDF(path,pdfPath);if(bo){System.out.println("转换完成!");}else{System.out.println("转换失败!");             }}// word转换为pdfpublic static boolean word2PDF(String inputFile, String pdfFile) {try {// 打开word应用程序ActiveXComponent app = new ActiveXComponent("Word.Application");// 设置word不可见app.setProperty("Visible", false);// 获得word中所有打开的文档,返回Documents对象Dispatch docs = app.getProperty("Documents").toDispatch();// 调用Documents对象中Open方法打开文档,并返回打开的文档对象DocumentDispatch doc = Dispatch.call(docs, "Open", inputFile, false, true).toDispatch();// 调用Document对象的SaveAs方法,将文档保存为pdf格式/** Dispatch.call(doc, "SaveAs", pdfFile, wdFormatPDF* //word保存为pdf格式宏,值为17 );*/Dispatch.call(doc, "ExportAsFixedFormat", pdfFile, wdFormatPDF);// word保存为pdf格式宏,值为17// 关闭文档Dispatch.call(doc, "Close", false);// 关闭word应用程序app.invoke("Quit", 0);return true;} catch (Exception e) {return false;}}// excel转换为pdfpublic static boolean excel2PDF(String inputFile, String pdfFile) {try {ActiveXComponent app = new ActiveXComponent("Excel.Application");app.setProperty("Visible", false);Dispatch excels = app.getProperty("Workbooks").toDispatch();Dispatch excel = Dispatch.call(excels, "Open", inputFile, false,true).toDispatch();Dispatch.call(excel, "ExportAsFixedFormat", xlTypePDF, pdfFile);Dispatch.call(excel, "Close", false);app.invoke("Quit");return true;} catch (Exception e) {return false;}}// ppt转换为pdfpublic static boolean ppt2PDF(String inputFile, String pdfFile) {try {ActiveXComponent app = new ActiveXComponent("PowerPoint.Application");// app.setProperty("Visible", msofalse);Dispatch ppts = app.getProperty("Presentations").toDispatch();Dispatch ppt = Dispatch.call(ppts, "Open", inputFile, true,// ReadOnlytrue,// Untitled指定文件是否有标题false// WithWindow指定文件是否可见).toDispatch();Dispatch.call(ppt, "SaveAs", pdfFile, ppSaveAsPDF);Dispatch.call(ppt, "Close");app.invoke("Quit");return true;} catch (Exception e) {return false;}}}

Java利用Jacob实现excel,ppt,word转pdf 及jacob遇到的坑相关推荐

  1. java利用poi导出excel功能-附带图片导出

    java利用poi导出excel功能-附带图片导出 写在前面 最近刚离职,闲来无事,于是把上两家公司都有碰到过的需求但都没有去研究实现:即导出带图片的excel报表.于是就折腾了一下这个功能,研究出来 ...

  2. Java实现Excel和word转pdf加水印,复制及可用

    Java实现Excel和word转pdf加水印,复制及可用 时隔大半年,之前朋友,今天突然找我说,他们有个需求要做这东西.想起来之前自己照着官方文档写,也走了不少坑.今天就索性写个,也为了方便以后使用 ...

  3. java利用poi实现Excel考勤报表的输出

    java利用poi实现Excel考勤报表的输出 实现效果 SXSSFWorkbook超大数据导出 标题.表头.内容有样式 可以多个sheet(满65535行数据换新的sheet) 一度为快 maven ...

  4. Java 利用EasyPoi做Excel模板的导入导出操作

    Java 利用EasyPoi做Excel模板的导入导出操作 项目背景 加入pom依赖 项目Excel模板图 代码实现 首先是实体类定义 Excel 实现导入 Excel的导出 结束语 项目背景 作为一 ...

  5. LayUi集成下载Excel、word、PDF、CSV扩展

    LayUi集成下载Excel.word.PDF.CSV扩展 Excel.CSV Word PDF 根据项目需求,主要用的layui这个前段框架,现在需要支持将页面下载为四种格式的文件. Excel.C ...

  6. ie如何导入html文件类型,Magicodes.IE: 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf和Html。...

    Magicodes.IE 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel.Word.Pdf和Html. 疯狂的徽章 GitHub Azure DevOps Build Status: ...

  7. jacob java excel_使用 Jacob 操作Excel、Word文件

    Excel是常用的报表格式,一般系统中要求生成报表,多半都是使用Excel格式.在Java中操作Excel可以使用JavaExcel(jxl)或poi,大部分常用的功能都能实现,也很方便,但生成好的报 ...

  8. java word excel ppt 图片转pdf

    第一步将jar导入mvn库 下载地址 0积分 https://download.csdn.net/download/qq_35908944/18549670 mvn install:install-f ...

  9. jacob操作excel、word、AutoCAD分享

    零.导读 这是使用jacob操作Word和Excel的教程,因为看不懂官方文档(英语不好,翻译太菜)所以选择去找找教程. jacob可以操作的 1.jacob 操作 cad相关资料 对象方法和操作,里 ...

最新文章

  1. 使用JUnit进行单元测试
  2. 杨剑勇:物联网是一个未来概念?其实就在身边
  3. java数据库编程(JDBC)
  4. [NOI2007] 货币兑换 解题报告
  5. linux abs 和 屏幕 大小关系,观点|一个 Linux 菜鸟的回忆录
  6. winform技巧一,errorprovider,任务栏可见,总在最前
  7. 从零开始学习jQuery (三) 管理jQuery包装集【转】
  8. 禁用Alt + F4关闭窗体的一些常用方法
  9. hihoCoder-1098最小生成树二·Kruscal算法 (最小生成树)
  10. Bitbucket 触发内网 Jenkins Build
  11. 1024 Palindromic Number (25 分)大整数相加+会问+reverse倒置
  12. ios 相机开发 自动对焦
  13. 命令提示符命令(cmd)
  14. vscode 实时运行代码插件 Quokka
  15. 【观察】星环科技重构数据云平台,持续释放数据红利和价值
  16. c++读取cfg文件
  17. Exception in Thread: ValueError: signal number 32 out of range
  18. 可兼容所有浏览器的“收藏本站”、“设为首页”js代码
  19. 如何激励公司员工最有效?
  20. 使用 TestFight 构建 Beta 测试版本

热门文章

  1. 招商银行宁波分行信息技术岗
  2. php getenv无法获取环境变量
  3. 光影精灵usb安装linux,惠普光影精灵台式机安装Ubuntu16.04
  4. Android view动画之透明度动画
  5. 天天生鲜Django项目③
  6. 数字万用表如何测试出三极管的极性
  7. JAVA实践(一)————中国象棋打谱系统
  8. 眉山市官宣:四川大学眉山校区,引进“双一流”!
  9. Jasper连接Oracle报:oracle.jdbc.driver.OracleDriver cannot be found by net.sf.jasperreports_6.6.0.final
  10. redis使用场景之Bitmaps---应用于信息统计状态