java 仿百度文库源码_Java模拟实现百度文档在线浏览
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模拟实现百度文档在线浏览相关推荐
- 计算机毕业设计Java房产中介管理系统(源码+系统+mysql数据库+lW文档)
计算机毕业设计Java房产中介管理系统(源码+系统+mysql数据库+lW文档) 计算机毕业设计Java房产中介管理系统(源码+系统+mysql数据库+lW文档) 本源码技术栈: 项目架构:B/S架构 ...
- 计算机毕业设计Java学校食堂管理(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java学校食堂管理(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java学校食堂管理(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...
- 计算机毕业设计Java毕业论文答辩管理系统(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java毕业论文答辩管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java毕业论文答辩管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B ...
- 计算机毕业设计Java乒乓球俱乐部管理(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java乒乓球俱乐部管理(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java乒乓球俱乐部管理(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...
- 计算机毕业设计Java教师继续教育(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java教师继续教育(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java教师继续教育(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...
- 计算机毕业设计Java医用物品管理系统(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java医用物品管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java医用物品管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...
- 计算机毕业设计Java家电售后管理系统(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java家电售后管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java家电售后管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...
- 计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档)
计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档) 计算机毕业设计Java多媒体素材管理系统(源码+系统+mysql数据库+lW文档) 本源码技术栈: 项目架构:B/S ...
- 计算机毕业设计Java宠物医院管理系统(源码+系统+mysql数据库+lw文档
计算机毕业设计Java宠物医院管理系统(源码+系统+mysql数据库+lw文档 计算机毕业设计Java宠物医院管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...
- 计算机毕业设计Java宠物托管系统(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java宠物托管系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java宠物托管系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...
最新文章
- 微信JS SDK Demo
- 【存储知识学习】第三章磁盘原理与技术3.1磁盘结构--《大话存储》阅读笔记
- TCL脚本语言基础介绍
- java 网站开发实例_完整的javaweb项目
- Python中几个有趣的函数
- 解决windows预览体验计划页面空白问题
- 蹭热度?罗永浩:下一个创业项目是“元宇宙公司”
- JDK8新特性LocalDate、LocalTime和LocalDateTime
- Glib2之dbus用法(五)
- Flutter 静态挂载腾讯X5WebView(Tbs)浏览器内核
- OMAPL多核异构通信驱动AD9833波形发生器-Notify组件
- Python编写工资计算器
- dbm和db的关系、区别
- 2021计算机夏令营保研经历(中科院计算所,南京大学人工智能学院等)
- 《Temporal AA , SMAA and MSAA》
- 【ABAP】-TSV_TNEW_PAGE_ALLOC_FAILED因ADRV底表数据过多,导致BP维护视图超资源瓶颈
- 《左耳听风-高效学习篇》阅读笔记
- 使用openlayers3加载png格式图片
- stm32指纹、蓝牙识别门禁系统项目详解
- it人都包括哪些岗位
热门文章
- NS方程求解-NSFnet
- 自己为 GridView 写分页 如: [首页][上一页][下一页][末页]
- pip 下载安装时使用清华大学镜像(各种国内源配置)
- 日文简历 模板
- 前端设备通过Ehome协议接入EasyCVR平台无法播放问题解决
- 数据库变为可疑_数据库显示可疑的修复方法
- 乐谱五线谱排版软件种类与介绍
- 【Sibelius】制谱软件 (西贝柳斯)入门笔记
- STM32实现四驱小车(二)通信任务——遥控器SBUS通信
- 超强合集:OCR 文本检测干货汇总(含论文、源码、demo 等资源)