1.openoffice需要导入的jar包

jodconverter-core-3.0-beta-4.jar
juh-3.2.1.jar
jurt-3.2.1.jar
ridl-3.2.1.jar
unoil-3.2.1.jar**加粗样式**

2.js

function windowopenfile(urlp,billid,name){var url=urlp+"?billid="+billid+"&storagetype="+name;window.open(url);}

3.后台代码

//在线打开预览文档@RequestMapping("/fileview")public String fileview(Model model,String filepath,String sourceid) throws Exception{ filepath="关.doc";//sourceid=new Base64Util().decodeToString(sourceid);final String path =request.getSession().getServletContext().getRealPath("/view/word") ;fileExists(path);final String pfdpath =request.getSession().getServletContext().getRealPath("/view/filetopdf/") ;fileExists(pfdpath);String filename=request.getSession().getServletContext().getRealPath("/vod/mp4");FileToPdf fileToPdf=new FileToPdf();String   wordfilename= StringUtils.substringBeforeLast(filepath, ".");//String wordfilename = filepath.substring(0, filepath.lastIndexOf("."));File  file=new File(pfdpath+"/"+wordfilename+".pdf");if(!file .exists()){fileToPdf.docToPdf(new File(filename+"/"+filepath),new File(pfdpath+"/"+wordfilename+".pdf"));}System.out.println("fileToPdfpath"+pfdpath+"/"+wordfilename+".pdf");String osName = System.getProperty("os.name");if(osName.toLowerCase().indexOf("windows")>-1){model.addAttribute("pdfname","/SCMS/view/filetopdf/"+wordfilename+".pdf");}else{model.addAttribute("pdfname","/view/filetopdf/"+wordfilename+".pdf");}return "/admin/manage/pdf/exportPdf.ftl";}/*** 判断文件是否存在* */public static void fileExists(String path){File file =new File(path);  //如果文件夹不存在则创建    if  (!file .exists()  && !file .isDirectory())      {       file .mkdir();    }}

FileToPdf

package com.ams.util;import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.tools.Tool;import org.apache.commons.lang.StringUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import com.ams.ServiceConfig;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;public class FileToPdf {@Autowiredprivate HttpServletRequest request;public void docToPdf(File inputFile, File outputFile) {ServiceConfig serverconfig = new Tools().getConfig();String IP = serverconfig.getIP();System.out.println(IP);// 启动服务String OpenOffice_HOME = "";String command = "";String osName = System.getProperty("os.name");Process pro = null;OpenOfficeConnection connection = null;// 启动OpenOffice的服务/*if(osName.toLowerCase().indexOf("windows")>-1){command = OpenOffice_HOME + "program/soffice.exe --headless--accept=\"socket,host=127.0.0.1,port=8100;urp;\"";}else{command = OpenOffice_HOME + "program/startup.sh";command = OpenOffice_HOME + "program/soffice --headless--accept=\"socket,host=127.0.0.1,port=8100;urp;\"--nofirststartwizard &";}*/// System.out.println("command"+command);// connect to an OpenOffice.org instance running on port 8100try {connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);connection.connect();if (outputFile.exists()) {} else {DocumentConverter converter = new OpenOfficeDocumentConverter(connection);System.out.println(inputFile + "=" + outputFile);converter.convert(inputFile, outputFile);}} catch (Exception ex) {System.out.println("程序出错了");ex.printStackTrace();} finally {// close the connectionif (connection != null) {connection.disconnect();// connection = null;}// pro.destroy();}System.out.println("生成" + outputFile.getName());}// 生产pdf线程static class TestThread extends java.lang.Thread {private File inputFile;private File outputFile;public void run() {FileToPdf t = new FileToPdf();t.docToPdf(inputFile, outputFile);System.out.println(outputFile.getName() + "文件已生成");}public void setInputFile(File inputFile) {this.inputFile = inputFile;}public void setOutputFile(File outputFile) {this.outputFile = outputFile;}}// 将pdf转换为图片public String pdftoimage(Model model, String filepath, String pdfimage, String wordfilename) throws Exception {String filename = filepath;File file = new File(filename);String imghtml = "";try {PDDocument doc = PDDocument.load(file);PDFRenderer renderer = new PDFRenderer(doc);int pageCount = doc.getNumberOfPages();for (int i = 0; i < pageCount; i++) {File file1 = new File(pdfimage +"/"+ wordfilename + i + ".png");// 如果文件夹不存在则创建if (file1.exists()) {} else {BufferedImage image = renderer.renderImageWithDPI(i, 296);// BufferedImage image = renderer.renderImage(i, 2.5f);ImageIO.write(image, "PNG", new File(pdfimage +"/"+wordfilename + i + ".png"));}String osName = System.getProperty("os.name");if (osName.toLowerCase().indexOf("windows") > -1) {imghtml += "<img src=\'" + "/SCMS/view/filetopdf/pdfimage/" + wordfilename + i + ".png"+ "\' οndragstart=\"return false;\" style=\'width:740px;height:740px;vertical-align:text-bottom;\'><br>";} else {imghtml += "<img src=\'" + "/view/filetopdf/pdfimage/" + wordfilename + i + ".png"+ "\' οndragstart=\"return false;\" style=\'width:740px;height:740px;vertical-align:text-bottom;\'><br>";}}} catch (IOException e) {e.printStackTrace();}String pdfhtml = "<html><head><META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body><div style=\"height:740px;overflow:auto\">"+ imghtml + "</div></body></html>";return pdfhtml;}}

4.下载openoffice软件
5.找到openoffice软件根目录
eg:C:\Program Files (x86)\OpenOffice 4\program
6.cmd进入黑窗口
执行C:\Program Files (x86)\OpenOffice 4\program回车
执行soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard回车
7.js页面预览文档(exportPdf.ftl)(第一种)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HEAD><#assign ctx = request.contextPath />
<META content="IE=7.0000" http-equiv="X-UA-Compatible">
<TITLE>文档预览</TITLE>
<META content="text/html; charset=UTF-8" http-equiv=content-type>
<META content=text/css http-equiv=Content-Style-Type>
<LINK rel=stylesheet type=text/css href="${ctx}/assets-web/pdf/jq.css" media=screen>
<STYLE type=text/css>
#main {TEXT-ALIGN: center; MARGIN: 20px; BACKGROUND: #fff
}
A.media {DISPLAY: block
}
DIV.media {MARGIN: auto; FONT-SIZE: small
}
DIV.media DIV {FONT-STYLE: italic; COLOR: #888
}
#lr {BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; MARGIN: auto; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid
}
DIV.example {BORDER-BOTTOM: #ccc 1px dashed; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px dashed; PADDING-BOTTOM: 20px; MARGIN: 15px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; BACKGROUND: #ffe; CLEAR: left; BORDER-TOP: #ccc 1px dashed; BORDER-RIGHT: #ccc 1px dashed; PADDING-TOP: 20px
}
</STYLE><SCRIPT type=text/javascript
src="${ctx}/assets-web/pdf/jquery.min.js"></SCRIPT><SCRIPT type=text/javascript
src="${ctx}/assets-web/pdf/chili-1.7.pack.js"></SCRIPT><SCRIPT type=text/javascript
src="${ctx}/assets-web/pdf/jquery.media.js"></SCRIPT><SCRIPT type=text/javascript
src="${ctx}/assets-web/pdf/jquery.metadata.js"></SCRIPT><SCRIPT type=text/javascript>$(function() {$('a.media').media({width:1200, height:850});});
</SCRIPT><META name=GENERATOR content="MSHTML 9.00.8112.16520"></HEAD>
<BODY><!--${ctx}/vod/mp4/-->
<A class=media href="${(pdfname)!}">PDF File</A>
<SCRIPT type=text/javascript src="${ctx}/assets-web/pdf/urchin.js"></SCRIPT></BODY></HTML>

7.js页面预览文档(exportPdf.ftl)(第二种)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HEAD><#assign ctx = request.contextPath /><META content="IE=7.0000" http-equiv="X-UA-Compatible"><TITLE>文档预览</TITLE><META content="text/html; charset=UTF-8" http-equiv=content-type><META content=text/css http-equiv=Content-Style-Type><LINK rel=stylesheet type=text/css href="${ctx}/assets/pdf/jq.css" media=screen>
<BODY><script type="text/javascript">window.onload=function (ev) {PDFObject.embed("${(pdfname)!}","body");}</script><script type="text/javascript" src="${ctx!}/assets/pdf/pdfobject.min.js" ></script>
</BODY></HTML>

pdfobject.min.js

/*PDFObject v2.0.201604172https://github.com/pipwerks/PDFObjectCopyright (c) 2008-2016 Philip HutchisonMIT-style license: http://pipwerks.mit-license.org/UMD module pattern from https://github.com/umdjs/umd/blob/master/templates/returnExports.js
*/
(function(root,factory){if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory()}else{root.PDFObject=factory()}})(this,function(){"use strict";if(typeof window==="undefined"||typeof navigator==="undefined"){return false}var pdfobjectversion="2.0.201604172",supportsPDFs,createAXO,isIE,supportsPdfMimeType=typeof navigator.mimeTypes["application/pdf"]!=="undefined",supportsPdfActiveX,buildFragmentString,log,embedError,embed,getTargetElement,generatePDFJSiframe,isIOS=function(){return/iphone|ipad|ipod/i.test(navigator.userAgent.toLowerCase())}(),generateEmbedElement;createAXO=function(type){var ax;try{ax=new ActiveXObject(type)}catch(e){ax=null}return ax};isIE=function(){return!!(window.ActiveXObject||"ActiveXObject"in window)};supportsPdfActiveX=function(){return!!(createAXO("AcroPDF.PDF")||createAXO("PDF.PdfCtrl"))};supportsPDFs=supportsPdfMimeType||isIE()&&supportsPdfActiveX();buildFragmentString=function(pdfParams){var string="",prop;if(pdfParams){for(prop in pdfParams){if(pdfParams.hasOwnProperty(prop)){string+=encodeURIComponent(prop)+"="+encodeURIComponent(pdfParams[prop])+"&"}}if(string){string="#"+string;string=string.slice(0,string.length-1)}}return string};log=function(msg){if(typeof console!=="undefined"&&console.log){console.log("[PDFObject] "+msg)}};embedError=function(msg){log(msg);return false};getTargetElement=function(targetSelector){var targetNode=document.body;if(typeof targetSelector==="string"){targetNode=document.querySelector(targetSelector)}else if(typeof jQuery!=="undefined"&&targetSelector instanceof jQuery&&targetSelector.length){targetNode=targetSelector.get(0)}else if(typeof targetSelector.nodeType!=="undefined"&&targetSelector.nodeType===1){targetNode=targetSelector}return targetNode};generatePDFJSiframe=function(targetNode,url,pdfOpenFragment,PDFJS_URL,id){var fullURL=PDFJS_URL+"?file="+encodeURIComponent(url)+pdfOpenFragment;var scrollfix=isIOS?"-webkit-overflow-scrolling: touch; overflow-y: scroll; ":"overflow: hidden; ";var iframe="<div style='"+scrollfix+"position: absolute; top: 0; right: 0; bottom: 0; left: 0;'><iframe  "+id+" src='"+fullURL+"' style='border: none; width: 100%; height: 100%;' frameborder='0'></iframe></div>";targetNode.className+=" pdfobject-container";targetNode.style.position="relative";targetNode.style.overflow="auto";targetNode.innerHTML=iframe;return targetNode.getElementsByTagName("iframe")[0]};generateEmbedElement=function(targetNode,targetSelector,url,pdfOpenFragment,width,height,id){var style="";if(targetSelector&&targetSelector!==document.body){style="width: "+width+"; height: "+height+";"}else{style="position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%;"}targetNode.className+=" pdfobject-container";targetNode.innerHTML="<embed "+id+" class='pdfobject' src='"+url+pdfOpenFragment+"' type='application/pdf' style='overflow: auto; "+style+"'/>";return targetNode.getElementsByTagName("embed")[0]};embed=function(url,targetSelector,options){if(typeof url!=="string"){return embedError("URL is not valid")}targetSelector=typeof targetSelector!=="undefined"?targetSelector:false;options=typeof options!=="undefined"?options:{};var id=options.id&&typeof options.id==="string"?"id='"+options.id+"'":"",page=options.page?options.page:false,pdfOpenParams=options.pdfOpenParams?options.pdfOpenParams:{},fallbackLink=typeof options.fallbackLink!=="undefined"?options.fallbackLink:true,width=options.width?options.width:"100%",height=options.height?options.height:"100%",forcePDFJS=typeof options.forcePDFJS==="boolean"?options.forcePDFJS:false,PDFJS_URL=options.PDFJS_URL?options.PDFJS_URL:false,targetNode=getTargetElement(targetSelector),fallbackHTML="",pdfOpenFragment="",fallbackHTML_default="<p>This browser does not support inline PDFs. Please download the PDF to view it: <a href='[url]'>Download PDF</a></p>";if(!targetNode){return embedError("Target element cannot be determined")}if(page){pdfOpenParams.page=page}pdfOpenFragment=buildFragmentString(pdfOpenParams);if(forcePDFJS&&PDFJS_URL){return generatePDFJSiframe(targetNode,url,pdfOpenFragment,PDFJS_URL,id)}else if(supportsPDFs){return generateEmbedElement(targetNode,targetSelector,url,pdfOpenFragment,width,height,id)}else{if(PDFJS_URL){return generatePDFJSiframe(targetNode,url,pdfOpenFragment,PDFJS_URL,id)}else if(fallbackLink){fallbackHTML=typeof fallbackLink==="string"?fallbackLink:fallbackHTML_default;targetNode.innerHTML=fallbackHTML.replace(/\[url\]/g,url)}return embedError("This browser does not support embedded PDFs")}};return{embed:function(a,b,c){return embed(a,b,c)},pdfobjectversion:function(){return pdfobjectversion}(),supportsPDFs:function(){return supportsPDFs}()}});

java实现openoffice在线预览文档相关推荐

  1. OpenOffice在线预览文档

    使用OpenOffice在线预览文档 开发中遇到了一个需求,需要在线预览word文档,excel表格,pdf等等文件,于是经过一圈Google,发现了这个工具,openoffice会把文档转为pdf文 ...

  2. 在线预览文档 Office Online

    前言 一直想学习做个在线预览文档的功能,今天使用Office Online Server 2016进行实现在线预览功能. 服务器版本选择:Office Online Server 2016搭配wind ...

  3. 前端页面预览word_前端实现在线预览文档

    前端实现在线预览文档 发布时间:2019-06-03 17:22, 浏览次数:529 <>前端实现在线预览文档 最近项目开发中需要实现在线预览Word,Excel,PowerPoint格式 ...

  4. nopi word to html,C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)...

    由于项目需要,需要一个在线预览office的功能,小编一开始使用的是微软提供的方法,简单快捷,但是不符合小编开发需求, 就另外用了:将文件转换成html文件然后预览html文件的方法.对微软提供的方法 ...

  5. 【板栗糖GIS】怎么将网络上只能在线预览文档另存为pdf(插件篇)

    怎么将网络上只能在线预览文档另存为pdf(插件篇) 目录 1.使用插件,这里推荐FireShot,好用免费 2.安装该插件的方式 3.打开在线预览文档的网址 4.点击插件-截取整个页面并且-另存为pd ...

  6. PHP 在线预览文档

    PHP 在线预览word.excel.ppt.pdf.txt等文档文件. PHP 在线预览文档 写代码比较少的方案. // PDF.text可以直接网页打开查看 // word.excel.ppt 文 ...

  7. 前端实现在线预览文档

    前端实现在线预览文档 最近项目开发中需要实现在线预览Word,Excel,PowerPoint格式的文档,网上查找了很多资源,各说纷纭,但是在一一尝试之后只有使用微软的预览接口才能成功,其他的会出现各 ...

  8. html怎么转换到百度,类似百度文库在线预览文档flash版(支持word、excel、ppt、pdf)+在线预览文档html版...

    类似百度文库在线预览文档flash版(支持word.excel.ppt.pdf)+在线预览文档html版 (1).将文档转换为html,只支持支持office文档 (2).将文档转换为flash,实现 ...

  9. 【ABAP】在线预览文档对象的开发实现

    应用场景:有些定制化开发(报表/功能增强等)完成之后,客户需要将其操作手册或者相关文档放在某个报表的初始画面,供实际操作者在线查阅,当然这个功能也同样类似于模板的下载,这里就以在线预览(直接打开)为例 ...

最新文章

  1. dedecms 漏洞_代码审计之二次漏洞审计
  2. c++ 显示图片_飞利浦256P1FR显示器一线直连MacBook使用体验分享
  3. java 字母金字塔_LeetCode756:金字塔转换矩阵(JAVA题解)
  4. 网传梅姨照片竟然是电脑合成的!仅需 100 行代码,你也能做到!
  5. JavaScript从初级往高级走系列————Virtual Dom
  6. leetcode —— 959. 由斜杠划分区域
  7. Golang web filter 轻量级实现
  8. 编程数学(A-2)-次方
  9. MacOS自动操作Automator的技巧
  10. 顶点计划家庭感情冲突问题讨论
  11. 史上最详细的F450四轴装机实例(无名官方推荐的)
  12. 有一根27厘米的细木杆java_百度笔试题 蚂蚁爬杆
  13. 阿里云视频点播服务的开通和使用
  14. 【安全】Shellshock漏洞
  15. 百度网盘搜索引擎神器哪些网站比较好用
  16. pd.Series()函数
  17. 十分钟学python-【译】10分钟学会Pandas
  18. Springboot项目打包发布找不到项目中使用的文件
  19. 推荐一款小巧而强大的截屏软件 FastStone Capture
  20. Failed to start component 异常解决方案

热门文章

  1. C语言 实验十 结构体
  2. 比利时研制全息图像电视 可取代现有3D技术
  3. Unit 4 关系代名词
  4. Excel如何使用ifs函数完成多条件判断
  5. 【博物纳新】Unity海洋场景构建
  6. 题解 三维偏序(陌上花开)+黑科技食用
  7. 网站访问时提示ERR_CONNECTION_TIMED_OUT(操作超时)!
  8. xxl-job本地部署到容器部署到k8s部署
  9. “香港一卡通”收費表
  10. Linux内存寻址(一):分段机制