使用jacob进行文档类型转换支持PPT、Excel、Word转为PDF模式

本方法对Windows部署的项目友好,最后需要在jdk/bin目录下导入与jar包版本一致的.dll文件

文件地址

链接:https://pan.baidu.com/s/1rSCC8RgwL3DN0Fz0pkCARQ
提取码:a065

jar包

 <!-- 文档转换 --><dependency><groupId>net.sf.jacob-project</groupId><artifactId>jacob</artifactId><version>1.14.3</version></dependency>

文档转换工具类

package com.shouzhi.service.common;import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;import java.io.File;/*** 文档类型转换为PDF预览* @author Mr* @date 2021/4/2 14:02*/
public class PDFUtil {private static final int wdFormatPDF = 17;private static final int xlTypePDF = 0;private static final int ppSaveAsPDF = 32;//判断文档类型public static boolean change2PDF(String inputFile, String pdfFile) {String suffix = getFileSufix(inputFile);File file = new File(inputFile);if (!file.exists()) {return false;}if (suffix.equals("pdf")) {return false;}if (suffix.equals("doc") || suffix.equals("docx")) {return wordToPDF(inputFile, pdfFile);} else if (suffix.equals("ppt") || suffix.equals("pptx")) {return pptToPDF(inputFile, pdfFile);} else if (suffix.equals("xls") || suffix.equals("xlsx")) {return excelToPDF(inputFile, pdfFile);} else {return false;}}public static String getFileSufix(String fileName) {int splitIndex = fileName.lastIndexOf(".");return fileName.substring(splitIndex + 1);}// word转换为pdfpublic static boolean wordToPDF(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();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 excelToPDF(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 pptToPDF(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进行文档类型转换PDF相关推荐

  1. Python调用WPS进行文档转换PDF及PDF转图片

    这里是利用WPS进行转换,要先安装WPS. 安装依赖 pip install pypiwin32 代码 #!/usr/bin/python # -*- coding: UTF-8 -*-import ...

  2. java opennlp_使用opennlp进行文档分类

    序 本文主要研究下如何使用opennlp进行文档分类 DoccatModel 要对文档进行分类,需要一个最大熵模型(Maximum Entropy Model),在opennlp中对应DoccatMo ...

  3. 使用Python和OCR进行文档解析的完整代码演示(附代码)

    来源:DeepHub IMBA 本文约2300字,建议阅读5分钟本文中将使用Python演示如何解析文档(如pdf)并提取文本,图形,表格等信息. 文档解析涉及检查文档中的数据并提取有用的信息.它可以 ...

  4. 使用opennlp进行文档分类

    序 本文主要研究下如何使用opennlp进行文档分类 DoccatModel 要对文档进行分类,需要一个最大熵模型(Maximum Entropy Model),在opennlp中对应DoccatMo ...

  5. ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类

    ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类 目录 输出结果 实现代码 输出结果 先看文档分类后的结果,一共得到五类电影: 实现代码 # -*- c ...

  6. ML之H-Clusters:基于H-Clusters算法利用电影数据集实现对top 100电影进行文档分类

    ML之H-Clusters:基于H-Clusters算法利用电影数据集实现对top 100电影进行文档分类 目录 输出结果 实现代码 输出结果 先看输出结果 实现代码 # -*- coding: ut ...

  7. Linux系统通过FTP进行文档基本操作【华为云分享】

    [摘要] Linux系统里通过FTP可以对文档进行上传,更改权限和基本的文档管理. 获得Linux系统后,不熟悉命令操作的情况下,可以通过FTP工具进行文档操作,下面以WinSCP工具为例进行讲解: ...

  8. 利用YAKE进行文档关键词提取

    利用YAKE!进行文档关键词提取 现记录一种基于关键词统计.无监督.单文档关键词提取算法YAKE!(Yet Another Keyword Extractor)的使用笔记. YAKE!基于5种指标:是 ...

  9. 使用 pandoc 进行文档转换(markdown转word)

    pandoc 是一个神奇的转换工具(详见官网),它支持各种文档格式之间的转换.本文针对如何使用 pandoc 转换 markdown 为 docx 进行说明. pandoc 下载 安装 pandoc ...

最新文章

  1. delphi中等待外部应用程序执行完成后,再继续执行自有代码段
  2. html5的FileReader文件读取
  3. 2021年数据中心行业发生了这十件大事
  4. Python基础教程:list列表、tuple元组、range常用方法总结
  5. android 如何在线程缓存实体类
  6. 【报错笔记】在做struts项目时,所有项目代码没问题但就是报404错误。
  7. python数据分析numpy_(转)Python数据分析之numpy学习
  8. 命令点无效怎么处理_CAD执行修改命令,你试过重复选择对象吗?
  9. Android官方开发文档Training系列课程中文版:动画视图之创建自定义转场动画
  10. java2019 数据结构算法面试题_2019年JVM最新面试题,必须收藏它
  11. 【构造】Gym - 101411F - Figure ans Spots
  12. numeric比较大小 数据库_Liquibase 数据库版本管理工具:3. changeSet 变更集详解
  13. java8新特性有哪些
  14. 共享编辑文档系统dzzoffice安装
  15. R语言使用dplyr包计算dataframe分组聚合四分位距IQR值(四分位距(interquartile range, IQR),又称四分差)
  16. 一键使 WIN 10进入休眠、睡眠、关机的命令
  17. matlab实验学习心得,matlab实验心得体会-学习matlab的心得体会
  18. 郑州、昆明、韶关等多地全面推行商品房买卖合同电子签约
  19. Android 回车换行的持久化
  20. Gym - 100519 B Bring Your Own Bombs 离散化+二分+思维

热门文章

  1. iPhone和MacOS同步复制粘贴功能导致iPhone死机问题
  2. 关于计算机经历兼职的英文作文,大学生的兼职工作英语作文
  3. 数据可视化报表工具的整体设计
  4. C++ OpenCV生成九宫格图像
  5. 20+ 创意Flash网站设计欣赏
  6. Can‘t use Subversion command line client:svn不能使用Subversion命令行客户端:svn
  7. 分享35套非常华丽的免费 PSD 网页按钮素材!
  8. 解决vue中使用swiper插件——李帅醒博客
  9. win10下CH340模块下载stc89c52程序
  10. oracle 按分隔符 导出,将oracle库中表导出为外部文本并指定分隔符