Java利用Jacob实现excel,ppt,word转pdf 及jacob遇到的坑
- 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遇到的坑相关推荐
- java利用poi导出excel功能-附带图片导出
java利用poi导出excel功能-附带图片导出 写在前面 最近刚离职,闲来无事,于是把上两家公司都有碰到过的需求但都没有去研究实现:即导出带图片的excel报表.于是就折腾了一下这个功能,研究出来 ...
- Java实现Excel和word转pdf加水印,复制及可用
Java实现Excel和word转pdf加水印,复制及可用 时隔大半年,之前朋友,今天突然找我说,他们有个需求要做这东西.想起来之前自己照着官方文档写,也走了不少坑.今天就索性写个,也为了方便以后使用 ...
- java利用poi实现Excel考勤报表的输出
java利用poi实现Excel考勤报表的输出 实现效果 SXSSFWorkbook超大数据导出 标题.表头.内容有样式 可以多个sheet(满65535行数据换新的sheet) 一度为快 maven ...
- Java 利用EasyPoi做Excel模板的导入导出操作
Java 利用EasyPoi做Excel模板的导入导出操作 项目背景 加入pom依赖 项目Excel模板图 代码实现 首先是实体类定义 Excel 实现导入 Excel的导出 结束语 项目背景 作为一 ...
- LayUi集成下载Excel、word、PDF、CSV扩展
LayUi集成下载Excel.word.PDF.CSV扩展 Excel.CSV Word PDF 根据项目需求,主要用的layui这个前段框架,现在需要支持将页面下载为四种格式的文件. Excel.C ...
- ie如何导入html文件类型,Magicodes.IE: 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf和Html。...
Magicodes.IE 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel.Word.Pdf和Html. 疯狂的徽章 GitHub Azure DevOps Build Status: ...
- jacob java excel_使用 Jacob 操作Excel、Word文件
Excel是常用的报表格式,一般系统中要求生成报表,多半都是使用Excel格式.在Java中操作Excel可以使用JavaExcel(jxl)或poi,大部分常用的功能都能实现,也很方便,但生成好的报 ...
- java word excel ppt 图片转pdf
第一步将jar导入mvn库 下载地址 0积分 https://download.csdn.net/download/qq_35908944/18549670 mvn install:install-f ...
- jacob操作excel、word、AutoCAD分享
零.导读 这是使用jacob操作Word和Excel的教程,因为看不懂官方文档(英语不好,翻译太菜)所以选择去找找教程. jacob可以操作的 1.jacob 操作 cad相关资料 对象方法和操作,里 ...
最新文章
- 使用JUnit进行单元测试
- 杨剑勇:物联网是一个未来概念?其实就在身边
- java数据库编程(JDBC)
- [NOI2007] 货币兑换 解题报告
- linux abs 和 屏幕 大小关系,观点|一个 Linux 菜鸟的回忆录
- winform技巧一,errorprovider,任务栏可见,总在最前
- 从零开始学习jQuery (三) 管理jQuery包装集【转】
- 禁用Alt + F4关闭窗体的一些常用方法
- hihoCoder-1098最小生成树二·Kruscal算法 (最小生成树)
- Bitbucket 触发内网 Jenkins Build
- 1024 Palindromic Number (25 分)大整数相加+会问+reverse倒置
- ios 相机开发 自动对焦
- 命令提示符命令(cmd)
- vscode 实时运行代码插件 Quokka
- 【观察】星环科技重构数据云平台,持续释放数据红利和价值
- c++读取cfg文件
- Exception in Thread: ValueError: signal number 32 out of range
- 可兼容所有浏览器的“收藏本站”、“设为首页”js代码
- 如何激励公司员工最有效?
- 使用 TestFight 构建 Beta 测试版本
热门文章
- 招商银行宁波分行信息技术岗
- php getenv无法获取环境变量
- 光影精灵usb安装linux,惠普光影精灵台式机安装Ubuntu16.04
- Android view动画之透明度动画
- 天天生鲜Django项目③
- 数字万用表如何测试出三极管的极性
- JAVA实践(一)————中国象棋打谱系统
- 眉山市官宣:四川大学眉山校区,引进“双一流”!
- Jasper连接Oracle报:oracle.jdbc.driver.OracleDriver cannot be found by net.sf.jasperreports_6.6.0.final
- redis使用场景之Bitmaps---应用于信息统计状态