项目需要对上传的word及pdf进行在线预览,因基于jquery的pdf插件,很方面实现在线预览,而word实现在线预览费劲不少,于是想到在进行上传处理时,直接将word转成pdf,在预览时直接预览pdf实现在线预览。而项目环境为win server,于是决定使用jacob进行word转pdf。

研究再三,发现jacob从2005年开始,共有19个版本,根据现有jdk版本及服务器版本,最终选中jacob1.15进行搭配。

下载地址:http://sourceforge.net/projects/jacob-project/?source=typ_redirect

处理如下:

1.将下载的jacob.jar放入项目lib目录。

2.将dll放入jre/bin目录。

3.java代码如下(转):

import java.io.File;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant; public class Word2Pdf {
static final int wdFormatPDF = 17;// PDF 格式
public void wordToPDF(String docFileName,String toFileName){
ComThread.InitSTA();
System.out.println("启动Word...");
long start = System.currentTimeMillis();
ActiveXComponent app = null;
Dispatch doc = null;
try {
app = new ActiveXComponent("Word.Application");
app.setProperty("Visible", new Variant(false));
Dispatch docs = app.getProperty("Documents").toDispatch();
doc = Dispatch.call(docs, "Open" , docFileName).toDispatch();
System.out.println("打开文档..." + docFileName);
System.out.println("转换文档到PDF..." + toFileName);
File tofile = new File(toFileName);
if (tofile.exists()) {
tofile.delete();
}
Dispatch.call(doc,
"SaveAs",
toFileName, // FileName
wdFormatPDF);
long end = System.currentTimeMillis();
System.out.println("转换完成..用时:" + (end - start) + "ms."); } catch (Exception e) {
System.out.println("========Error:文档转换失败:" + e.getMessage());
} finally {
Dispatch.call(doc,"Close",false);
System.out.println("关闭文档");
if (app != null)
app.invoke("Quit", new Variant[] {});
}
//如果没有这句话,winword.exe进程将不会关闭
ComThread.Release(); } public static void main(String[] args) {
Word2Pdf d2p = new Word2Pdf();
d2p.wordToPDF("C:/Users/SIR/Desktop/1228.doc","C:/Users/SIR/Desktop/1228.pdf");
}
}

4.html代码实现

<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<script type="text/javascript" src="avascript/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jquery.media.js"></script>
<style type="text/css">
body{ text-align:center;padding:0px;margin:0px;}
div{ margin:0 auto; width:800px; height:100%; }
ul{
font-size:14px;
line-height:30px;
text-align: left;
}
</style>
<script type="text/javascript">
$(function() {
$('a.media').media({width:800, height:600});
});
</script>
</head>
<body>
<div>
<a class="media" href="${ctx}/upload/${fileid}.pdf"></a>
</div>
<div>
<p>说明:如未正确显示预览文件,由以下情况导致!
<ul>
<li>本地未安装PDF阅读器,请下载并Adobe Reader或福昕PDF阅读器!</li>
<li>如本地已安装PDF阅读器,请按如下操作步骤进行设定。<br/>
1.如本地已有Adobe Reader,请点击》编辑》首选项》英特网》在浏览器中显示PDF》勾选》保存<br/>
2.如本地已有福昕PDF阅读器,请点击》工具》偏好设置》文件关联》在浏览器内显示PDF》勾选》保存<br/></li>
</ul>
</div>
</body>
</html>

  

最新文章

  1. ASP.Net MVC——使用 ITextSharp 完美解决HTML转PDF(中文也可以)
  2. Android之使用个推实现三方应用的推送功能
  3. Linux 如何查看修改DNS配置
  4. jquery ui dialog autofocus 去掉默认第一个元素获取焦点
  5. 微信APP支付(Java后台生成签名具体步骤)
  6. .NET Framework (代码库、通用类型系统CTS、CLR) 简介
  7. springmvc学习第四天
  8. SCN试验之二 checkpoin scn 与数据库scn的关系
  9. android TypedValue.applyDimension()的作用
  10. [转]C#基础回顾:Asp.net 缓存
  11. android studio 出错
  12. SecureCRT从本传相片到服务器的注意事项
  13. hdu 4745 动态规划
  14. Hack工具
  15. POJ-1088 Skiing(记忆化搜索)
  16. Delphi 的动态数组
  17. NemaStudio船舶模拟软件下载及破解
  18. 数据库【mongodb】之pymongo
  19. css选择器以及使用场景
  20. u-boot移植(四)---修改前工作:代码流程分析3---代码重定位

热门文章

  1. OpenRisc-40-or1200的MMU模块分析
  2. Java三大特征之封装(一)
  3. sqlserver2005仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 &#39;SendMealAddress&#39;中为标识列指定显式值。
  4. HTML5 Web存储(Web Storage)技术及用法
  5. OpenWRT交叉编译
  6. 【Sqlserver清空数据库中所有表数据】
  7. html5 notifications通知
  8. 快速配置 Samba 将 Linux 目录映射为 Windows 驱动器
  9. hdu 5621 KK&#39;s Point(数学,推理题)
  10. C语言课程设计—图书管理系统