jacob 操作word转pdf
2024-08-26 23:57:00
项目需要对上传的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>
最新文章
- ASP.Net MVC——使用 ITextSharp 完美解决HTML转PDF(中文也可以)
- Android之使用个推实现三方应用的推送功能
- Linux 如何查看修改DNS配置
- jquery ui dialog autofocus 去掉默认第一个元素获取焦点
- 微信APP支付(Java后台生成签名具体步骤)
- .NET Framework (代码库、通用类型系统CTS、CLR) 简介
- springmvc学习第四天
- SCN试验之二 checkpoin scn 与数据库scn的关系
- android TypedValue.applyDimension()的作用
- [转]C#基础回顾:Asp.net 缓存
- android studio 出错
- SecureCRT从本传相片到服务器的注意事项
- hdu 4745 动态规划
- Hack工具
- POJ-1088 Skiing(记忆化搜索)
- Delphi 的动态数组
- NemaStudio船舶模拟软件下载及破解
- 数据库【mongodb】之pymongo
- css选择器以及使用场景
- u-boot移植(四)---修改前工作:代码流程分析3---代码重定位
热门文章
- OpenRisc-40-or1200的MMU模块分析
- Java三大特征之封装(一)
- sqlserver2005仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 &#39;SendMealAddress&#39;中为标识列指定显式值。
- HTML5 Web存储(Web Storage)技术及用法
- OpenWRT交叉编译
- 【Sqlserver清空数据库中所有表数据】
- html5 notifications通知
- 快速配置 Samba 将 Linux 目录映射为 Windows 驱动器
- hdu 5621 KK&#39;s Point(数学,推理题)
- C语言课程设计—图书管理系统