简介:

这篇文章中的代码都是参考于网上的,只做一个记录。主要做的就是实现一个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在线预览相关推荐

  1. office 在线预览

    office 在线预览 永中office dcs xdocin Spire系列 officeweb365 wps在线预览 idocv onlyoffice office online serve nt ...

  2. office在线预览 word在线预览 .net在线预览 文件在线浏览接口

    office在线预览 word在线预览 excel在线预览 文件浏览接口服务 支持移动端浏览,只要能使用浏览器上网都可以使用,不需要安装任何第三方工具. 1.word在线预览 excel在线预览,.n ...

  3. office在线预览哪家强?不能播放ppt动画,不能监听翻页?

    前言 众所周知,word.excel.ppt 和 pdf 文件在线预览有很多解决方案,但大多无法播放 ppt 动画,或者功能非常单一.这不,最近产品经理闭关修炼三天,提出了如下需求: 监听文档翻页,根 ...

  4. php 永中office在线预览

    永中office在我的项目中主要的应用目的是在线预览office文件. 至于为啥不用微软,不知道是不是我的姿势不对,大佬也说在国内可能出现无法转换(误). 复制代码 准备 永中office DCS文档 ...

  5. office转pdf实现office在线预览(aspose)

    office转pdf实现office在线预览(aspose) 1. jar包地址 2. 将jar包安装到本地 3. pom文件添加依赖 4. license.xml ① license.xml存放路径 ...

  6. Office在线预览及PDF在线预览的实现方式大集合

    一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免 ...

  7. Office在线预览及PDF在线预览的实现方式

    原文链接:http://www.officeweb365.com/officetoview.html 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office ...

  8. Office在线预览—PPT专场

    前言 当下是一个软件.小程序.APP等遍地的时代,互联网已经深入到我们工作.生活的方方面面.只要是企业,总有移动办公需求,出差在外,不方便电脑端查看,文件太大,担心手机内存等. 在线预览可以让我们不经 ...

  9. 【玩转云函数】腾讯云云函数结合金山文档打造轻量级 Office 在线预览服务

    以下内容来自「玩转腾讯云」用户原创文章,已获得授权. 本文介绍下如何使用云函数来实现 Office 办公文件的预览 01. 前言 曾几何时,文档预览曾经很麻烦,小公司需要购买服务器,自行搭建文件服务器 ...

  10. 文件在线浏览之微软office在线预览及隐藏的坑和其他更优解决办法

    一  微软也已经免费提供在线版本office预览啦 https://view.officeapps.live.com/op/view.aspx?src=URL src后面的URL是网上能访问到的文件地 ...

最新文章

  1. PicGo 配置Gitee 图床
  2. 跨平台C++开发环境搭建——GNU+STL+Boost+wxWidget+OpenSceneGraph
  3. 常见Java面试题 – 第二部分:equals与==
  4. 【C语言】写一个函数,并调用该函数求两个整数的最大公约数和最小公倍数
  5. 数据 3 分钟 | 《数据安全法》即将施行;ACM SIGMOD在西安举办;艾瑞咨询发布数据库行业报告...
  6. OSI七层、TCP/IP五层、UDP、TCP的socket编程(服务端及客户端)、字节序转换、多进程以及多线程服务端的实现
  7. JAVA-5NIO之Selector
  8. TensorFlow神经网络:模块化的神经网络八股
  9. Sql语句查询当天本周本月记录的where条件
  10. My tips----搭建一个自己喜欢的风格桌面
  11. 内嵌网页 UniWebView 3 的使用
  12. OKHttp原理讲解之基本概念
  13. 《Go语言圣经》阅读笔记:第二章程序结构
  14. 两行Python代码实现视频负片特效
  15. python中让输出不换行
  16. SVG夜晚床月亮场景代码
  17. CF 371D Vessels 【并查集】
  18. python函数返回多个变量_Python中接收函数多个返回结果的两种方法
  19. i3-1125G4 怎么样 相当于什么水平
  20. windows server 2003 系统安装蓝屏问题

热门文章

  1. linux ss服务器,【ss】Linux上ss命令的安装与使用
  2. 1stopt(应用集锦)
  3. 带你用最简单的方式获得小米完整root权限(无需刷第三方rom)
  4. sop28和so28j封装_sop28封装尺寸
  5. android 高德地图 logo,Android高德之旅(3)UI Setting
  6. 绕开华为通道,获取解锁码解锁BootLoader
  7. mmd动作:Bad End Night
  8. 单片机多级菜单的简单实现
  9. html字体样式美化,css美化文字做法详解总结
  10. 在 WSO2 ESB 5.0.0 中使用 MyBatis 框架