1、服务器上已经上传有需要的word文档,目前需要做的是将word文档按百度文库的样子显示在页面上,直接显示不可以,需要两个软件,openoffice和swftools工具,其中openoffice安装在C:/Program File/OpenOffice 4/下,启动openoffice服务是在cmd窗口中

进入OpenOffice 4/program 目录下:

soffice –headless –accept=”socket,host=127.0.0.1,port=8100;urp;”–nofirststartwizard&

回车,虽然没有反馈,但是服务启动了。

Swftools工具安装目录:C:/Program Files (x86)/swftools   ------------程序中需要使用到路径。

上面是使用的控件,准备完成。

2、jar包:需要的jar包:slf4j-api-1.5.6.jar 和 slf4j-log4j12-1.5.6.jar.

3、下面是FileConverterService.java类 :

作用:专门转换word到pdf,再转pdf到swf格式,在jsp页面调用。

文件名中如果有空格要去掉,有空格不可以完成转换。

package com.sjq.dwjs.service.fileConverter;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;  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;  /** * doc docx格式转换 */
public class FileConverterService {private static final int environment = 1;// 环境 1:windows 2:linux  private String fileString;// (只涉及pdf2swf路径问题)  private String outputPath = "";// 输入路径 ,如果不设置就输出在默认的位置  private String fileName;  private File pdfFile;  private File swfFile;  private File docFile;  public FileConverterService(String fileString) {  ini(fileString);  }  /** * 重新设置file *  * @param fileString */  public void setFile(String fileString) {  ini(fileString);  }  /** * 初始化 *  * @param fileString */  private void ini(String fileString) {  this.fileString = fileString;  //此处文件名中有空格的要去除空格,有空格时不可以完成转换。fileName = fileString.substring(0, fileString.lastIndexOf(".")).trim();  docFile = new File(fileString);  pdfFile = new File(fileName + ".pdf");  swfFile = new File(fileName + ".swf");  }  /** * 转为PDF *  * @param file */  private void doc2pdf() throws Exception {  if (docFile.exists()) {  if (!pdfFile.exists()) {  OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);  try {  connection.connect();  DocumentConverter converter = new OpenOfficeDocumentConverter(connection);  converter.convert(docFile, pdfFile);  // close the connection  connection.disconnect();  System.out.println("****pdf转换成功,PDF输出:" + pdfFile.getPath()+ "****");  } catch (java.net.ConnectException e) {  e.printStackTrace();  System.out.println("****swf转换器异常,openoffice服务未启动!****");  throw e;  } catch (com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException e) {  e.printStackTrace();  System.out.println("****swf转换器异常,读取转换文件失败****");  throw e;  } catch (Exception e) {  e.printStackTrace();  throw e;  }  } else {  System.out.println("****已经转换为pdf,不需要再进行转化****");  }  } else {  System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");  }  }  /** * 转换成 swf */  @SuppressWarnings("unused")  private void pdf2swf() throws Exception {  Runtime r = Runtime.getRuntime();  if (!swfFile.exists()) {  if (pdfFile.exists()) {  if (environment == 1) {// windows环境处理  try {  Process p = r.exec("C:/Program Files (x86)/swftools/pdf2swf.exe "+
pdfFile.getPath() + " -o "+ swfFile.getPath() + " -T 9");  System.out.print(loadStream(p.getInputStream()));  System.err.print(loadStream(p.getErrorStream()));  System.out.print(loadStream(p.getInputStream()));  System.err.println("****swf转换成功,文件输出:"  + swfFile.getPath() + "****");  if (pdfFile.exists()) {  pdfFile.delete();  }  } catch (IOException e) {  e.printStackTrace();  throw e;  }  } else if (environment == 2) {// linux环境处理  try {  Process p = r.exec("pdf2swf " + pdfFile.getPath()  + " -o " + swfFile.getPath() + " -T 9");  System.out.print(loadStream(p.getInputStream()));  System.err.print(loadStream(p.getErrorStream()));  System.err.println("****swf转换成功,文件输出:"  + swfFile.getPath() + "****");  if (pdfFile.exists()) {  pdfFile.delete();  }  } catch (Exception e) {  e.printStackTrace();  throw e;  }  }  } else {  System.out.println("****pdf不存在,无法转换****");  }  } else {  System.out.println("****swf已经存在不需要转换****");  }  }  static String loadStream(InputStream in) throws IOException {  int ptr = 0;  in = new BufferedInputStream(in);  StringBuffer buffer = new StringBuffer();  while ((ptr = in.read()) != -1) {  buffer.append((char) ptr);  }  return buffer.toString();  }  /** * 转换主方法 */  @SuppressWarnings("unused")  public boolean conver() {  if (swfFile.exists()) {  System.out.println("****swf转换器开始工作,该文件已经转换为swf****");  return true;  }  if (environment == 1) {  System.out.println("****swf转换器开始工作,当前设置运行环境windows****");  } else {  System.out.println("****swf转换器开始工作,当前设置运行环境linux****");  }  try {  doc2pdf();  pdf2swf();  } catch (Exception e) {  e.printStackTrace();  return false;  }  if (swfFile.exists()) {  return true;  } else {  return false;  }  }  /** * 返回文件路径 *  * @param s */  public String getswfPath() {  if (swfFile.exists()) {  String tempString = swfFile.getPath();  tempString = tempString.replaceAll("\\\\", "/");  return tempString;  } else {  return "";  }  }  /** * 设置输出路径 */  public void setOutputPath(String outputPath) {  this.outputPath = outputPath;  if (!outputPath.equals("")) {  String realName = fileName.substring(fileName.lastIndexOf("/"),  fileName.lastIndexOf("."));  if (outputPath.charAt(outputPath.length()) == '/') {  swfFile = new File(outputPath + realName + ".swf");  } else {  swfFile = new File(outputPath + realName + ".swf");  }  }  }  }

4、tomcat服务器上的word文档存放在WebRoot/upload下

Jbxx.jsp存储路径WebRoot/jsp/wlxy/Jbxx.jsp

Display.jsp 存储路径 WebRoot/jsp/wlxy/Display.jsp

5、Jbxx.jsp如下:

<%
try{
String sql = "select id,wjmc from 表名 where glid = '"+id+"' ";rs1 = stmt1.executeQuery(sql);while(rs1.next()){t_fjid = blanknull(rs1.getString("id"));wjmc = blanknull(rs1.getString("wjmc"));                                   out.println("<tr><td align='left' style='font-size:10pt;padding-bottom:10px;' >");
out.println("<a href=\"javascript:displayFj('"+wjcclj+"')\">"+wjmc+"</a>   ");
}
rs1.close();
}catch(Exception e){e.printStackTrace();
}
wjcclj = application.getRealPath("/")+"upload\\"+wjcclj.replace("+","%20");
//这样得到的路径是word的实际路径:D:\tomcat_dwjs\webapps\upload\word文档名称.docx
FileConverterService d = new FileConverterService(wjcclj);
//调用FileConverterService.java类中的conver方法开始转换,先执行doc2pdf()将office文件转换为pdf;再执行pdf2swf()将pdf转换为swf;
d.conver();
//调用getswfPath()方法,打印转换后的swf文件路径
System.out.println(d.getswfPath());
//生成swf相对路径,以便传递给flexpaper播放器
swfpath = d.getswfPath();
//将相对路径放入sessio中保存
%>

6、Display.jsp页面如下:

要注意的是路径中文乱码。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.net.*"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><%String swfPath="";if(request.getParameter("swfPath")!=null&& !"".equals(request.getParameter("swfPath"))){swfPath=request.getParameter("swfPath");swfPath=URLDecoder.decode(swfPath,"UTF-8");}swfPath = basePath+"upload/"+swfPath;//重要,这样的路径是URL访问路径:http://10.23.23.43:88/dwjs/upload/word文档名称.docxSystem.out.println(swfPath+"!!!!!!!!!!!!!!!!");%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>My JSP 'knowledge_displayFj.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--><script type='text/javascript' src='../../js/swfobject.js'></script><script type="text/javascript" src="../../js/jquery.js"></script><script type="text/javascript" src="../../js/flexpaper_flash.js"></script><script type="text/javascript" src="../../js/flexpaper_flash_debug.js"></script></head><body><div align="center"><div class="contentshow" style="margin-top:40px;"><div id='flashContent' style='text-align:center; padding-top:10px;'>文件查看出!</div><script type='text/javascript'> var swfVersionStr = '10.0.0';var xiSwfUrlStr = '../../js/expressInstall.swf';var swfFile ='<%=swfPath%>';var flashvars = { ObjectID : 'FlexPaperViewer',SwfFile : encodeURI(swfFile),Scale : 0.6, ZoomTransition : 'easeOut',ZoomTime : 0.5,ZoomInterval : 0.2,FitPageOnLoad : true,FitWidthOnLoad : true,PrintEnabled : false,FullScreenAsMaxWindow : false,ProgressiveLoading : true,localeChain: 'zh_CN'};var params = {}params.quality = 'high';params.bgcolor = '#ffffff';params.allowscriptaccess = 'sameDomain';params.allowfullscreen = 'true';params.wmode = 'opaque';var attributes = {};attributes.id = 'FlexPaperViewer';attributes.name = 'FlexPaperViewer';swfobject.embedSWF('../../js/FlexPaperViewer.swf','flashContent','732', '550',swfVersionStr, xiSwfUrlStr,flashvars, params, attributes);swfobject.createCSS('#flashContent', 'display:block;text-align:left;');</script> </div></div>
</body>
</html>

其中expressInstall.swf,FlexPaperViewer.swf文件可以在网上下载,存放路径:WebRoot/js/下。

需要的js包swfobject.js。

word文档在页面上浏览,类似百度文库形式相关推荐

  1. 插入顶部_最快速地把同一内容插入到Word文档不同页面的相同位置

    您好,欢迎来到[爆炒Office],这里有原创的实用办公软件技巧. 概述 之前也讨论过把同一内容插入到Word文档不同页面的相同位置,类似于logo,但又可以每一页都自由编辑.现在找到一个更好的方法, ...

  2. word 段显示在页面最下方_最快速地把同一内容插入到Word文档不同页面的相同位置...

    您好,欢迎来到[爆炒Office],这里有原创的实用办公软件技巧. 概述 之前也讨论过把同一内容插入到Word文档不同页面的相同位置,类似于logo,但又可以每一页都自由编辑.现在找到一个更好的方法, ...

  3. Word控件Spire.Doc 【页面设置】教程(11) ;如何在 C# 中设置 Word 文档的页面大小

    在 Microsoft Word 中,默认页面大小为 8.5x11 英寸字母.除此之外,MS Word 还提供了一些其他的预定义页面尺寸,例如 Legal (5.4x14).A4 (8.27x11.6 ...

  4. c# word文档基本操作 (上)

    首先,基本的开发工具是Visual Studio 我使用的是vs2017版本的. 首先选中visual c# 选择window桌面 选择控制台应用 然后设置项目保存路径和项目名称,点击确定.  项目创 ...

  5. h5页面打开word文档ios_H5页面生成word文件及发送邮件

    最近工作中有用到生成word文档及发送该附件的邮件.先说说我的思路和流程吧; 1.在后台用PHP将数据组合拼接成HTML格式: 2.生成带数据(HTML)的word文档(生成到项目对应的目录下): 3 ...

  6. python爬取百度文库付费文档_亲测免费转换百度文库付费文件

    大家现在在查资料时有时需要用到百度文库中的文件,其中很大一部分是需要下载券的,或者需要开通vip才能下载的!而这些都是需要钱买的,但就我在百度或者知乎中查询的很多方法,要不然就是不能用,要不然就是也要 ...

  7. 批量设置word文档的页面格式 word vba代码注释

    Sub 批量格式设置() '此代码为指定文件夹中所有选取的WORD文件的进行格式设置 Dim MyDialog As FileDialog, vrtSelectedItem As Variant, D ...

  8. java实现word文档转pdf在线浏览

    用到的jar jacob.jar http://mvnrepository.com/artifact/net.sf.jacob-project/jacob /*** doc转pdf在线浏览* */pu ...

  9. java 文档处理界面_java – 如何设置Word文档的页面方向?

    你正走在正确的道路上.将横向设置为横向描述纸张的一般方向,但仍需要纸张的尺寸.您的CTPageSz对象还没有. 这意味着除了setOrient调用之外,还需要setW和setH.这些调用采用代表1/2 ...

最新文章

  1. Git安装配置(Linux)
  2. 一文看懂怎样用 Python 创建比特币交易
  3. 个人-GIT使用方法
  4. .java 运行文件暗掉_Eclipse的暗色方案[关闭]
  5. 8.1 A Bayesian Methodology for Systemic Risk Assessment in Financial Networks(1)
  6. 分布式服务追踪与调用链系统
  7. 前端又一本升级版图书上市了,听说比第一版还好看
  8. scss、sass 和 css 的区别
  9. Android填坑系列:Android JSONObject 中对key-value为null的特殊处理
  10. JAVA语言的类、对象、变量、方法等的概括说明
  11. [洛谷1533] 可怜的狗狗
  12. Luogu1525 关押罪犯
  13. 顶级asp.net论坛程序bbsmax 4.2.2发布
  14. plc控制伺服电机的工程案例程序,包含伺服电机接线图
  15. 对联广告代码效果大全
  16. TD-SCDMA信道模式
  17. Dart中的构造函数
  18. 周伟焜挥别IBM 一个时代结束
  19. 【乐理学习笔记】音符时值和拍号
  20. CF11A Increasing Sequence(C++)

热门文章

  1. 白帽子渗透测试入门资源:参考书、课程、工具、认证
  2. keil错误提示Error: L6218E: Undefined symbol
  3. 上海电机学院计算机类分数,2021年上海电机学院投档线及各省最低录取分数线统计表...
  4. [ctfhub]刷题记录
  5. OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持 RxJava,比 Retrofit 更简单易用。
  6. 虚拟机上搭建Ubuntu系统步骤
  7. 10-赵志勇机器学习-meanshift
  8. 什么是反向代理,如何区别反向与正向代理
  9. 【广州芯享家】服务器维护过程中,你需要了解的5个小常识
  10. 【笔记】编程的原则:改善代码质量的101个方法