使用Jacob将金山WPS转化成PDF,其中WPS文字使用KWPS.Aplication、Excel表格是KET.Application、演示文档是KWPP.Application,废话不多说,直接上代码:

 import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant; /***
*
* @author create by 沙漠的波浪
*
* @date 2017年2月21日---下午2:29:27
*
*/
public class Word2PDF {
private static final int wdFormatPDF = 17;
private static final int xlTypePDF = 0;
private static final int ppSaveAsPDF = 32; public static void main(String[] args) { int time = convert2PDF("D:/17-2-17诉保通服务平台(法院).ppt", "D:/17-2-17诉保通服务平台(法院).pdf"); if (time == -4) {
System.out.println("转化失败,未知错误...");
} else if(time == -3) {
System.out.println("原文件就是PDF文件,无需转化...");
} else if (time == -2) {
System.out.println("转化失败,文件不存在...");
}else if(time == -1){
System.out.println("转化失败,请重新尝试...");
}else if (time < -4) {
System.out.println("转化失败,请重新尝试...");
}else {
System.out.println("转化成功,用时: " + time + "s...");
} } /***
* 判断需要转化文件的类型(Excel、Word、ppt)
*
* @param inputFile
* @param pdfFile
*/
private static int convert2PDF(String inputFile, String pdfFile) {
String kind = getFileSufix(inputFile);
File file = new File(inputFile);
if (!file.exists()) {
return -2;//文件不存在
}
if (kind.equals("pdf")) {
return -3;//原文件就是PDF文件
}
if (kind.equals("doc")||kind.equals("docx")||kind.equals("txt")) {
return Word2PDF.word2PDF(inputFile, pdfFile);
}else if (kind.equals("ppt")||kind.equals("pptx")) {
return Word2PDF.ppt2PDF(inputFile, pdfFile);
}else if(kind.equals("xls")||kind.equals("xlsx")){
return Word2PDF.Ex2PDF(inputFile, pdfFile);
}else {
return -4;
}
} /***
* 判断文件类型
*
* @param fileName
* @return
*/
public static String getFileSufix(String fileName) {
int splitIndex = fileName.lastIndexOf(".");
return fileName.substring(splitIndex + 1);
} /***
*
* Word转PDF
*
* @param inputFile
* @param pdfFile
* @return
*/ private static int word2PDF(String inputFile, String pdfFile) {
// TODO Auto-generated method stub
try {
// 打开Word应用程序
ActiveXComponent app = new ActiveXComponent("KWPS.Application");
System.out.println("开始转化Word为PDF...");
long date = new Date().getTime();
// 设置Word不可见
app.setProperty("Visible", new Variant(false));
// 禁用宏
app.setProperty("AutomationSecurity", new Variant(3));
// 获得Word中所有打开的文档,返回documents对象
Dispatch docs = app.getProperty("Documents").toDispatch();
// 调用Documents对象中Open方法打开文档,并返回打开的文档对象Document
Dispatch 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
System.out.println(doc);
// 关闭文档
long date2 = new Date().getTime();
int time = (int) ((date2 - date) / 1000); Dispatch.call(doc, "Close", false);
// 关闭Word应用程序
app.invoke("Quit", 0);
return time;
} catch (Exception e) {
// TODO: handle exception
return -1;
} } /***
*
* Excel转化成PDF
*
* @param inputFile
* @param pdfFile
* @return
*/
private static int Ex2PDF(String inputFile, String pdfFile) {
try { ComThread.InitSTA(true);
ActiveXComponent ax = new ActiveXComponent("KET.Application");
System.out.println("开始转化Excel为PDF...");
long date = new Date().getTime();
ax.setProperty("Visible", false);
ax.setProperty("AutomationSecurity", new Variant(3)); // 禁用宏
Dispatch excels = ax.getProperty("Workbooks").toDispatch(); Dispatch excel = Dispatch
.invoke(excels, "Open", Dispatch.Method,
new Object[] { inputFile, new Variant(false), new Variant(false) }, new int[9])
.toDispatch();
// 转换格式
Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method, new Object[] { new Variant(0), // PDF格式=0
pdfFile, new Variant(xlTypePDF) // 0=标准 (生成的PDF图片不会变模糊) 1=最小文件
// (生成的PDF图片糊的一塌糊涂)
}, new int[1]); // 这里放弃使用SaveAs
/*
* Dispatch.invoke(excel,"SaveAs",Dispatch.Method,new Object[]{
* outFile, new Variant(57), new Variant(false), new Variant(57),
* new Variant(57), new Variant(false), new Variant(true), new
* Variant(57), new Variant(true), new Variant(true), new
* Variant(true) },new int[1]);
*/
long date2 = new Date().getTime();
int time = (int) ((date2 - date) / 1000);
Dispatch.call(excel, "Close", new Variant(false)); if (ax != null) {
ax.invoke("Quit", new Variant[] {});
ax = null;
}
ComThread.Release();
return time;
} catch (Exception e) {
// TODO: handle exception
return -1;
}
} /***
* ppt转化成PDF
*
* @param inputFile
* @param pdfFile
* @return
*/
private static int ppt2PDF(String inputFile, String pdfFile) {
try {
ComThread.InitSTA(true);
ActiveXComponent app = new ActiveXComponent("KWPP.Application");
// app.setProperty("Visible", false);
System.out.println("开始转化PPT为PDF...");
long date = new Date().getTime();
Dispatch ppts = app.getProperty("Presentations").toDispatch();
Dispatch ppt = Dispatch.call(ppts, "Open", inputFile, true, // ReadOnly
// false, // Untitled指定文件是否有标题
false// WithWindow指定文件是否可见
).toDispatch();
Dispatch.invoke(ppt, "SaveAs", Dispatch.Method, new Object[]{
pdfFile,new Variant(ppSaveAsPDF)},new int[1]);
System.out.println("PPT");
Dispatch.call(ppt, "Close");
long date2 = new Date().getTime();
int time = (int) ((date2 - date) / 1000);
app.invoke("Quit");
return time;
} catch (Exception e) {
// TODO: handle exception
return -1;
}
}
}

开发所需要的jar包和dll文件的下载地址:http://download.csdn.net/my

Java使用Jacob将Word、Excel、PPT转化成PDF的更多相关文章

  1. java 如何将 word,excel,ppt如何转pdf --openoffice (1)

    承上启下,可折叠 上一篇说的是:服务器是windows server时,用jacob将msoffice(指的是word,excel,ppt)转换成pdf. 若被部署项目的服务器是centOS等linu ...

  2. word,excel,ppt,txt转换为 PDF

    /// <summary> /// 将word文档转换成PDF格式 /// </summary> /// <param name="sourcePath&quo ...

  3. windows环境下 php 将office文件(word/excel/ppt)转化为pdf(转)

    将office文件转化为pdf的方法有 1.利用openoffice提供的服务 (比较简单,但是转化的效果不太好) 2.使用office提供的服务 (注:这在windows服务器上,并且服务器上面安装 ...

  4. php 将office文件(word/excel/ppt)转化为pdf(windows和linux只要安装对应组件应该就行)

    一.配置环境 (1)配置php.ini 添加:extension=php_com_dotnet.dll com.allow_dcom = true  // 去掉号,改为true 重启环境 (2) 安装 ...

  5. PDF/WORD/EXCEL/PPT 文档在线阅读

    查资料看了2种解决方法: 1.通过办公软件dll转换,用flans去看 2.通过Aspose转换成pdf格式,在用js前台读pdf(我用的pdf.js) 今天我解决的就是WORD/EXCEL/PPT ...

  6. java 如何将 word,excel,ppt如何转pdf--jacob

    问题:java 如果将 word,excel,ppt如何转pdf 我个人的观点:windows server下用 jacob; linux server下 用openoffice.   PS:1.本文 ...

  7. Java通过openOffice实现word,excel,ppt转成pdf实现在线预览

    Java通过openOffice实现word,excel,ppt转成pdf实现在线预览 一.OpenOffice 1.1 下载地址 1.2 JodConverter 1.3 新建实体类PDFDemo ...

  8. Java使用Openoffice将word、ppt转换为PDF

    最近项目中要实现WORD的文件预览功能,我们可以通过将WORD转换成PDF或者HTML,然后通过浏览器预览. OpenOffice OpenOffice.org 是一套跨平台的办公室软件套件,能在 W ...

  9. Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结

    Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结 1. office word  excel pdf 的web预览要求 ...

随机推荐

  1. Java获取指定时间段的年份(开始、结束时间)、月份(开始、结束时间)、天数(开始、结束时间)

    package test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleD ...

  2. LayUI后台管理与综合示例

    一.LayUI介绍 layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用.其外在极简,却又不失饱满的内在,体 ...

  3. flask的debug模式下,网页输入pin码进行调试

    网站后端Python+Flask .FLASK调试模式之开启DEBUG与PIN使用? 自动加载: # 方式一 1 2 if __name__ == '__main__':     app.run(ho ...

  4. iOS开发 清除电话号码中的其他符号

    最近从通讯录读取电话号码,读出得号码如:134-1814-****. 而我需要的为11位纯数字,一直找方法解决此问题,今天终于找到了.. 分享一下…… 代码如下: NSString *original ...

  5. 30 分钟编写一个 Flask 应用

    Flask 是一种很赞的Python web框架.它极小,简单,最棒的是它很容易学. 今天我来带你搭建你的第一个Flask web应用!和官方教程 一样,你将搭建你自己的微博客系统:Flaskr.和官 ...

  6. PS 如何把大嘴变小嘴

    Photoshop整容教程:让MM美唇大嘴变小嘴 2009-06-17 14:15作者:佚名出处:天极网软件频道责任编辑:王健       下面就开始实际操作了.       1.首先从Photosh ...

  7. leetcode笔记:Contains Duplicate

    一. 题目描写叙述 Given an array of integers, find if the array contains any duplicates. Your function shoul ...

  8. IOS Object和javaScript相互调用

    在IOS开发中有时会用到Object和javaScript相互调用,详细过程例如以下: 1. Object中运行javascript代码,这个比較简单,苹果提供了非常好的方法 - (NSString ...

  9. leetcode第一刷_Best Time to Buy and Sell Stock III

    这道题还是挺难的,属于我前面提到的,给个数组,线性时间找出个什么东西,尽管上面的两个买卖股票也是这类.只是相比之下稚嫩多了.有关至少至多的问题比較烦人,不好想,等再做一些题,可能会发现什么规律.这道题 ...

  10. Yii之路(第八)

    [URL地址美化]给域名地址做一个别名伪静态.通过设置服务器服务.做域名地址的转换工作. urlManager地址美化,通过程序的方式实现地址的美化工作 http://xxxxx.com/index. ...