通过jacob实现office在线预览
简介:
这篇文章中的代码都是参考于网上的,只做一个记录。主要做的就是实现一个office在线预览功能。
第一步:装office
第二步:下载jacob
https://sourceforge.net/projects/jacob-project/files/jacob-project/ 打开网址下载,目前最新的是1.19版本。
第三步:配置jdk
解压下载完的jacob压缩包,根据jdk的版本选择dll中的一个,放入/jdk/jre/bin中。
第四步:在项目中引入jar包
在maven官网上找不到com.jacob的jar包,只能手动引入,这个jar包在jacob的压缩包中有。
<dependency><groupId>com.jacob</groupId><artifactId>jacob</artifactId><version>1.19</version><scope>system</scope><systemPath>${project.basedir}/lib/jacob.jar</systemPath></dependency>
第五步:将office转化为pdf文件
这里需要再次说明,这个代码不是我写的,这里只是做个记录,方便下次用到的时候直接使用。
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletResponse;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import org.springframework.web.bind.annotation.RestController;
import java.io.*;@RestController
public class PdfConvert {@RequestMapping("/PdfConvert.do")public void PdfConvert(HttpServletResponse response) {String path = "C:\\Users\\acer\\Desktop\\测试.doc";String path2 = "C:\\Users\\acer\\Desktop\\测试.pdf";word2PDF(path, path2);String path3 = "C:\\Users\\acer\\Desktop\\测试2.ppt";String path4 = "C:\\Users\\acer\\Desktop\\测试2.pdf";ppt2PDF(path3, path4);String path5 = "C:\\Users\\acer\\Desktop\\测试3.xls";String path6 = "C:\\Users\\acer\\Desktop\\测试3.pdf";excel2PDF(path5, path6);}public boolean word2PDF(String inputFile, String pdfFile) {ActiveXComponent app = new ActiveXComponent("Word.Application");try {app.setProperty("Visible", false);Dispatch docs = app.getProperty("Documents").toDispatch();Dispatch doc = Dispatch.call(docs, "Open", new Object[]{inputFile, false, true}).toDispatch();Dispatch.call(doc, "ExportAsFixedFormat", new Object[]{pdfFile, 17});Dispatch.call(doc, "Close", new Object[]{false});app.invoke("Quit", 0);return true;} catch (Exception var6) {app.invoke("Quit", 0);return false;}}public boolean excel2PDF(String inputFile, String pdfFile) {ComThread.InitSTA(true);ActiveXComponent app = new ActiveXComponent("Excel.Application");try {app.setProperty("Visible", false);app.setProperty("AutomationSecurity", new Variant(3));Dispatch excels = app.getProperty("Workbooks").toDispatch();Dispatch excel = Dispatch.invoke(excels, "Open", 1, new Object[]{inputFile, new Variant(false), new Variant(false)}, new int[9]).toDispatch();Dispatch.invoke(excel, "ExportAsFixedFormat", 1, new Object[]{new Variant(0), pdfFile, new Variant(0)}, new int[1]);Dispatch.call(excel, "Close", new Object[]{false});if (app != null) {app.invoke("Quit", new Variant[0]);app = null;}ComThread.Release();return true;} catch (Exception var6) {app.invoke("Quit");return false;}}public boolean ppt2PDF(String inputFile, String pdfFile) {ActiveXComponent app = new ActiveXComponent("PowerPoint.Application");try {Dispatch ppts = app.getProperty("Presentations").toDispatch();Dispatch ppt = Dispatch.call(ppts, "Open", new Object[]{inputFile, true, true, false}).toDispatch();Dispatch.call(ppt, "SaveAs", new Object[]{pdfFile, 32});Dispatch.call(ppt, "Close");app.invoke("Quit");return true;} catch (Exception var6) {app.invoke("Quit");return false;}}
}
第六步:在页面上展示pdf
后端:
@RequestMapping("/GetPdf.do")public void GetPdf(HttpServletResponse response) {//从数据库中查出文件位置和文件名字String pdfpath = "C:\\Users\\acer\\Desktop\\测试.pdf";String pdfname = "测试";try {File file = new File(pdfpath);if (!file.exists()) {response.getWriter().write("该文档生成pdf失败,请下载文档查看");return;}InputStream fis = new FileInputStream(pdfpath);byte[] buffer = new byte[1024];response.reset();response.addHeader("Content-Disposition", "inline;filename=" + java.net.URLEncoder.encode(pdfname, "UTF-8"));response.addHeader("Content-Length", "" + file.length());response.setContentType("application/pdf");OutputStream toClient = new BufferedOutputStream(response.getOutputStream());int nbytes = 0;while ((nbytes = fis.read(buffer)) != -1) {toClient.write(buffer, 0, nbytes);toClient.flush();}toClient.flush();toClient.close();fis.close();} catch (Exception ex) {ex.printStackTrace();}}
前端:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"/><title>pdf在线预览</title>
</head>
<body>
<div style=" width: 100%; height: 100%;"><embed src="/GetPdf.do"type="application/pdf" style="overflow: auto; width: 100%; height: 800px;" />
</div>
</body>
</html>
通过jacob实现office在线预览相关推荐
- office 在线预览
office 在线预览 永中office dcs xdocin Spire系列 officeweb365 wps在线预览 idocv onlyoffice office online serve nt ...
- office在线预览 word在线预览 .net在线预览 文件在线浏览接口
office在线预览 word在线预览 excel在线预览 文件浏览接口服务 支持移动端浏览,只要能使用浏览器上网都可以使用,不需要安装任何第三方工具. 1.word在线预览 excel在线预览,.n ...
- office在线预览哪家强?不能播放ppt动画,不能监听翻页?
前言 众所周知,word.excel.ppt 和 pdf 文件在线预览有很多解决方案,但大多无法播放 ppt 动画,或者功能非常单一.这不,最近产品经理闭关修炼三天,提出了如下需求: 监听文档翻页,根 ...
- php 永中office在线预览
永中office在我的项目中主要的应用目的是在线预览office文件. 至于为啥不用微软,不知道是不是我的姿势不对,大佬也说在国内可能出现无法转换(误). 复制代码 准备 永中office DCS文档 ...
- office转pdf实现office在线预览(aspose)
office转pdf实现office在线预览(aspose) 1. jar包地址 2. 将jar包安装到本地 3. pom文件添加依赖 4. license.xml ① license.xml存放路径 ...
- Office在线预览及PDF在线预览的实现方式大集合
一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免 ...
- Office在线预览及PDF在线预览的实现方式
原文链接:http://www.officeweb365.com/officetoview.html 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office ...
- Office在线预览—PPT专场
前言 当下是一个软件.小程序.APP等遍地的时代,互联网已经深入到我们工作.生活的方方面面.只要是企业,总有移动办公需求,出差在外,不方便电脑端查看,文件太大,担心手机内存等. 在线预览可以让我们不经 ...
- 【玩转云函数】腾讯云云函数结合金山文档打造轻量级 Office 在线预览服务
以下内容来自「玩转腾讯云」用户原创文章,已获得授权. 本文介绍下如何使用云函数来实现 Office 办公文件的预览 01. 前言 曾几何时,文档预览曾经很麻烦,小公司需要购买服务器,自行搭建文件服务器 ...
- 文件在线浏览之微软office在线预览及隐藏的坑和其他更优解决办法
一 微软也已经免费提供在线版本office预览啦 https://view.officeapps.live.com/op/view.aspx?src=URL src后面的URL是网上能访问到的文件地 ...
最新文章
- PicGo 配置Gitee 图床
- 跨平台C++开发环境搭建——GNU+STL+Boost+wxWidget+OpenSceneGraph
- 常见Java面试题 – 第二部分:equals与==
- 【C语言】写一个函数,并调用该函数求两个整数的最大公约数和最小公倍数
- 数据 3 分钟 | 《数据安全法》即将施行;ACM SIGMOD在西安举办;艾瑞咨询发布数据库行业报告...
- OSI七层、TCP/IP五层、UDP、TCP的socket编程(服务端及客户端)、字节序转换、多进程以及多线程服务端的实现
- JAVA-5NIO之Selector
- TensorFlow神经网络:模块化的神经网络八股
- Sql语句查询当天本周本月记录的where条件
- My tips----搭建一个自己喜欢的风格桌面
- 内嵌网页 UniWebView 3 的使用
- OKHttp原理讲解之基本概念
- 《Go语言圣经》阅读笔记:第二章程序结构
- 两行Python代码实现视频负片特效
- python中让输出不换行
- SVG夜晚床月亮场景代码
- CF 371D Vessels 【并查集】
- python函数返回多个变量_Python中接收函数多个返回结果的两种方法
- i3-1125G4 怎么样 相当于什么水平
- windows server 2003 系统安装蓝屏问题