使用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. 使用 Git + Dropbox + SourceTree 做 Source Code Management

    此篇文章主要針對有安裝 XCode 的 Mac 用戶. Git 版本控管工具,作用類似 CVS.Subversion(簡 稱SVN),好處在於 Git 不像 CVS 及 SVN 是屬於集中式的版本控管 ...

  2. ps --sort排序功能

    ps aux --sort +rss/rss根据内存正序排 ps aux --sort -rss 逆序 ps aux --sort -pid/pid ps aux --sort %cpu/-%cpu ...

  3. C++与Java语法上的不同

    最近学习算法和刷题基本都是用C++写的程序,在这个过程中,发现C++和Java在语法上有很多相同点,但也有很多不同点,而这些不同点对于已经掌握Java的程序员来说,理解C++代码可能会有些吃力甚至困难 ...

  4. Eureka vs Zookeeper

    著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡.在此Zookeeper保证 ...

  5. linux 输入子系统(3) button platform driver

    button platform driver 一般位于driver/input/keyboard/gpio_keys.c /*用于按键事件的上报,它将在按键的中断发生后被调用.其中逻辑就是获取到按键类 ...

  6. zabbix基于SNMP 协议监控路由器

    zabbix基于SNMP 协议监控路由器 步骤 步骤超级方便. 1. 路由器上开启snmp 2. 确保外网能訪问到 3. 用snmpwalk測试 4. 加入zabbix主机,SNMP interfac ...

  7. 记一次OGG数据写入HBase的丢失数据原因分析

    一.现象二.原因排查2.1 SparkStreaming程序排查2.2 Kafka数据验证2.3 查看OGG源码2.3.1 生成Kafka消息类2.3.2 Kafka配置类2.3.3 Kafka 消息 ...

  8. SHOW PROCESSLIST Syntax

    https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html SHOW PROCESSLIST shows you which threa ...

  9. C语言操作SQLite数据库

    SQLite头文件和源文件下载地址http://www.sqlite.org/download.html 以下是示例代码 #include <stdio.h> #include " ...

  10. HTML——使用表格进行页面布局

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...