Java模拟实现百度文档在线浏览

这个思路是我参考网上而来,代码是我实现。

采用Apache下面的OpenOffice将资源文件转化为pdf文件,然后将pdf文件转化为swf文件,用FlexPaper浏览。

ok,

A、下载OpenOffice (转换资源文件)

B、下载JodConverter(调用OpenOffice)

C、下载Swftools(Pdf2Swf)

D、下载 FlexPaper(浏览swf文件)

下载之后,先别急安装,请看完这篇博文

1、先看我们的MyEclipse工程结构

2、

将我们下载下来的

 解压之后将所有的 jar 文件拷贝到 baiduDoc 的 lib 下面去

3、   在 WebRoot 下面新建

 文件夹,将解压后的

 全部拷贝到 FlexPaper中去

4、 新建BaiDuServlet.java文件package com.baidu.util;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.net.ConnectException;import javax.p_w_picpathio.stream.FileImageInputStream;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;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;/**

* @Author:NuoYan

* @Date:2015-2-2 下午2:24:58

* TODO: 1、第一步,首先获取到需要查看的文件

*       2、第二部,将获取的文件(doc,xls,txt,ppt,03/07版本转化为PDF),这一步需要调用OpenOffice

*       3、第三部,将资源文件转换好的PDF文件转换为swf文件,使用FlexPaperViewer.swf进行浏览查看

*/public class BaiDuServlet extends HttpServlet {  private File sourceFile;// 要转化的源文件  private File pdfFile;// pdf中间文件对象  private File swfFile;// swf目标文件对象  private String filePath;// 用来保存文件路径  private String fileName;// 不包括后缀名的文件名  public File getSourceFile() {    return sourceFile;  }  public void setSourceFile(File sourceFile) {    this.sourceFile = sourceFile;  }  public File getPdfFile() {    return pdfFile;  }  public void setPdfFile(File pdfFile) {    this.pdfFile = pdfFile;  }  public File getSwfFile() {    return swfFile;  }  public void setSwfFile(File swfFile) {    this.swfFile = swfFile;  }  public String getFilePath() {    return filePath;  }  public void setFilePath(String filePath) {    this.filePath = filePath;  }  public String getFileName() {    return fileName;  }  public void setFileName(String fileName) {    this.fileName = fileName;  }  public void doGet(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {    String saveFileName = request.getParameter("savFile");    System.out.println(saveFileName);    String webPath = request.getRealPath("/");    filePath = webPath + "reader\\" + saveFileName;    fileName = filePath.substring(0, filePath.lastIndexOf("."));    // 创建三个文件对象    sourceFile = new File(filePath);    pdfFile = new File(fileName + ".pdf");    swfFile = new File(fileName + ".swf");    System.out.println(pdfFile);    System.out.println(swfFile);    // 1、将源文件转化为pdf格式文件    src2pdf();    try {      // 2、将pdf文件转化为swf文件      pdf2swf();    } catch (Exception e) {      e.printStackTrace();    }    // 将转化好的文件绑定到session上去    request.getSession().setAttribute("swfName", swfFile.getName());    System.out.println(swfFile.getName());    // 重定向到预览页面    response.sendRedirect(request.getContextPath() + "/reader/baseFile.jsp");  }  /**   * @Author:NuoYan   * @Date:2015-2-2 下午2:28:22 TODO://源文件转化为PDF文件   */  private void src2pdf() {    if (sourceFile.exists()) {      // 如果不存在,需要转份为PDF文件      if (!pdfFile.exists()) {        // 启用OpenOffice提供的转化服务        OpenOfficeConnection conn = new SocketOpenOfficeConnection(8100);        // 连接OpenOffice服务器        try {          conn.connect();          // 建立文件转换器对象          DocumentConverter converter = new OpenOfficeDocumentConverter(              conn);          converter.convert(sourceFile, pdfFile);          // 断开链接          conn.disconnect();          System.out.println("转换成功");        } catch (ConnectException e) {          e.printStackTrace();        }      } else {        System.out.println("已经存在PDF文件,不需要在转换!!");      }    } else {      System.out.println("文件路径不存在!!!");    }  }  /**   * @Author:NuoYan   * @Date:2015-2-2 下午2:28:32   * @throws Exception   * TODO:PDF转化为SWF文件   */  private void pdf2swf() throws Exception {    if (!swfFile.exists()) {      if (pdfFile.exists()) {        String command = "C:\\Pdf2swf\\pdf2swf.exe "            + pdfFile.getPath() + " -o " + swfFile.getPath()            + " -T 9";        System.out.println("转换命令:" + command);        // Java调用外部命令,执行pdf转化为swf        Runtime r = Runtime.getRuntime();        Process p = r.exec(command);        System.out.println(loadStream(p.getInputStream()));        System.out.println("swf文件转份成功!!!");        System.out.println(swfFile.getPath());      } else {        System.out.println("不存在PDF文件");      }    }  }    private static String loadStream(InputStream in) throws Exception {    int len = 0;    in = new BufferedInputStream(in);    StringBuffer buffer = new StringBuffer();    while ((len = in.read()) != -1) {      buffer.append((char) len);    }    return buffer.toString();  }

}

5、 修改index.jspHTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">

百度文库在线预览         /BaiDuServlet?savFile=1234.xls">在线预览

6、 编写baseFile.jsp文件html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

在线阅读

注意baseFile.jsp中的代码,不会你可以参考这里

/**************************************************************************************/

7、 到这里就完成,需要注意的是:

1、

 文件安装路径不要太深,不然 Java 调用外部命令不能执行,我这里是 C盘下

2、

2.1、红色1标记路径不能错,我就犯这个错误了

3、 启动OpenOffice的命令,不是直接双击启动的。官网启动方式,使用cd命令打开安装目录!

安装完openoffice后

1.安装服务

cd C:\Program Files (x86)\OpenOffice4\program

这一步你可以看你的OpenOffice安装哪里

执行

soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

2.查看是否安装成功

2.1查看端口对应的pid

netstat -ano|findstr "8100"

2.2查看pid对应的服务程序名

tasklist|findstr "ipd值"

效果图示:

源码地址:

有问题留言,来找我吧!

java 仿百度文库源码_Java模拟实现百度文档在线浏览相关推荐

  1. 计算机毕业设计Java房产中介管理系统(源码+系统+mysql数据库+lW文档)

    计算机毕业设计Java房产中介管理系统(源码+系统+mysql数据库+lW文档) 计算机毕业设计Java房产中介管理系统(源码+系统+mysql数据库+lW文档) 本源码技术栈: 项目架构:B/S架构 ...

  2. 计算机毕业设计Java学校食堂管理(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java学校食堂管理(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java学校食堂管理(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  3. 计算机毕业设计Java毕业论文答辩管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java毕业论文答辩管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java毕业论文答辩管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B ...

  4. 计算机毕业设计Java乒乓球俱乐部管理(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java乒乓球俱乐部管理(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java乒乓球俱乐部管理(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  5. 计算机毕业设计Java教师继续教育(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java教师继续教育(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java教师继续教育(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

  6. 计算机毕业设计Java医用物品管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java医用物品管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java医用物品管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  7. 计算机毕业设计Java家电售后管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java家电售后管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java家电售后管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  8. 计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档)

    计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档) 计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档) 本源码技术栈: 项目架构:B/S ...

  9. 计算机毕业设计Java宠物医院管理系统(源码+系统+mysql数据库+lw文档

    计算机毕业设计Java宠物医院管理系统(源码+系统+mysql数据库+lw文档 计算机毕业设计Java宠物医院管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  10. 计算机毕业设计Java宠物托管系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java宠物托管系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java宠物托管系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...

最新文章

  1. 微信JS SDK Demo
  2. 【存储知识学习】第三章磁盘原理与技术3.1磁盘结构--《大话存储》阅读笔记
  3. TCL脚本语言基础介绍
  4. java 网站开发实例_完整的javaweb项目
  5. Python中几个有趣的函数
  6. 解决windows预览体验计划页面空白问题
  7. 蹭热度?罗永浩:下一个创业项目是“元宇宙公司”
  8. JDK8新特性LocalDate、LocalTime和LocalDateTime
  9. Glib2之dbus用法(五)
  10. Flutter 静态挂载腾讯X5WebView(Tbs)浏览器内核
  11. OMAPL多核异构通信驱动AD9833波形发生器-Notify组件
  12. Python编写工资计算器
  13. dbm和db的关系、区别
  14. 2021计算机夏令营保研经历(中科院计算所,南京大学人工智能学院等)
  15. 《Temporal AA , SMAA and MSAA》
  16. 【ABAP】-TSV_TNEW_PAGE_ALLOC_FAILED因ADRV底表数据过多,导致BP维护视图超资源瓶颈
  17. 《左耳听风-高效学习篇》阅读笔记
  18. 使用openlayers3加载png格式图片
  19. stm32指纹、蓝牙识别门禁系统项目详解
  20. it人都包括哪些岗位

热门文章

  1. NS方程求解-NSFnet
  2. 自己为 GridView 写分页 如: [首页][上一页][下一页][末页]
  3. pip 下载安装时使用清华大学镜像(各种国内源配置)
  4. 日文简历 模板
  5. 前端设备通过Ehome协议接入EasyCVR平台无法播放问题解决
  6. 数据库变为可疑_数据库显示可疑的修复方法
  7. 乐谱五线谱排版软件种类与介绍
  8. 【Sibelius】制谱软件 (西贝柳斯)入门笔记
  9. STM32实现四驱小车(二)通信任务——遥控器SBUS通信
  10. 超强合集:OCR 文本检测干货汇总(含论文、源码、demo 等资源)