java
实现访百度文库、道客巴巴、豆丁阅读
2013-01-14
文
/
叶秋雨
前言:
最近在帮一个学校做培训系统,里面有一个模块是课程在线学习(笼统的讲
就是在线预览
word/ppt
之类的)
。由于学校要求文档是保密的,只能在线预览,
不提供下载、复制等操作。因此,我们想到了百度文库、道客巴巴、豆丁阅读等
实现方式。
前期在网上找了很多资料,
也请教了部分网友。
但总是觉得网上写的
不是那么的详细,
很多很多都是直接复制,
有些地方没有做必要的提示。
所以想
把自己的实现方式写下来,供大家参考。写的不好,请大家多多指教。
实现方式(来源于网络)
:
·
方式一
Txt/Word/Excel/PPT=>PDF(OpenOffice+JodConverter)=>SWF(pdf2swf)=>Flex
Paper
·方式二
Txt/Word/Excel/PPT=>PDF(MSOffice+JACOB)=>SWF(pdf2swf)=>FlexPaper
·方式三
Txt/Word/Excel/PPT=>SWF (
FlashPaper
)=> FlexPaper
·方式四
Txt/Word/Excel/PPT=>SWF(print2flash)=> FlexPaper
在此,
我选择了第一种方式,
选择其他三种方式的人,
欢迎百度
hi
我进行交
流。
工具支持:
OpenOffice
、
JodConverter
、
Swftools(pdf2swf)
、
FlexPaper
至于下载地址,我本来想附上的(因为我前面写过几篇技术整合文档,都附
上了相应的工具下载地址)
,但我相信在搜索引擎这么强大的今天,身为技术人
员的你,
会有办法的,
所以本人以后的技术文档,
不再附上相应的工具下载地址,
请自行搜索下载,如实在解决不了,请联系我(文档最后会附上联系方式)
。
具体实现:
备注:
本人的开发环境(工具)为:
Microsoft Windows XP SP3
eclipse3.7.0
jdk1.6.0_29
apache-tomcat-7.0.20
第一步:
·下载工具
OpenOffice
、
JodConverter
、
Swftools(pdf2swf)
、
FlexPaper
·安装
OpenOffice
,本人的安装路径为:
C:\Program Files\OpenOffice.org 3
·
安装
Swftools(pdf2swf)
,
本人的安装路径为:
D:\Program
Files\SWFTools
第二步:
·打开
eclipse
,新建工程
readonline
。
·
解压
jodconverter-2.2.2.zip
,
把压缩包中
lib
目录下的
jar
包放到工程
WEB-INF/lib
中,如下图:
·在工程
readonline
下的
WebRoot
下新建
flexpaper
文件夹,然后把下载
的
FlexPaper_1.4.5_flash.zip
解压缩后的内容放到该文件夹中,如下图:
第三步:
·新建
servlet
包,然后在包下面新建
ConvertServlet
类,代码如下:
package
servlet;
import
java.io.File;
import
java.io.IOException;
import
javax.servlet.ServletException;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
javax.servlet.http.HttpSession;
import
com.artofsolving.jodconverter.DocumentConverter;
import
com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnect
ion;
import
com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeC
onnection;
import
com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocument
Converter;
public
class
ConvertServlet
extends
HttpServlet{
private
File
sourceFile
;
//
转换源文件
private
File
pdfFile
;
目标文件
private
File
swfFile
;
//SWF
目标文件
private
Runtime
r
;
public
void
init()
throws
ServletException {
//
注意路径
sourceFile
=
new
File(
"G:/
apache-tomcat-7.0.20/webapps/readonline/swfFile/s.ppt"
);
pdfFile
=
new
File(
"G:/
apache-tomcat-7.0.20/webapps/readonline/swfFile/s.pdf"
);
swfFile
=
new
File(
"G:/
apache-tomcat-7.0.20/webapps/readonline/swfFile/s.swf"
);
System.
out
.println(
"
第一步:生成文件对象,准备转换
"
);
}
@Override
protected
void
doGet(HttpServletRequest
request,
HttpServletResponse
response)
throws
ServletException, IOException {
doPost(request, response);
}
@Override
protected
void
doPost(HttpServletRequest request,
HttpServletResponse response)
throws
ServletException, IOException {
//
转换成
文件
if
(
sourceFile
.exists()) {
if
(!
pdfFile
.exists()) {
OpenOfficeConnection connection =
new
SocketOpenOfficeConnection(8100);
try
{
connection.connect();
DocumentConverter converter =
new
OpenOfficeDocumentConverter(connection);
converter.convert(
sourceFile
,
pdfFile
);
pdfFile
.createNewFile();
connection.disconnect();
System.
out
.println(
"
第二步:转换为
格式
路径
"
+
pdfFile
.getPath());
}
catch
(java.net.ConnectException e) {
e.printStackTrace();
System.
out
.println(
"OpenOffice
服务未启动
"
);
throw
e;
}
catch
(com.artofsolving.jodconverter.openoffice.connection.OpenOfficeExcept
ion e) {
e.printStackTrace();
System.
out
.println(
"
读取文件失败
"
);
throw
e;
}
catch
(Exception e){
e.printStackTrace();
try
{
throw
e;
}
catch
(Exception e1) {
e1.printStackTrace();
}
}
}
else
{
System.
out
.println(
"
已转换为
,无需再次转换
"
);
}
}
else
{
System.
out
.println(
"
要转换的文件不存在
"
);
}
//
转换成
swf
文件
r
= Runtime.
getRuntime
();
if
(!
swfFile
.exists()){
if
(
pdfFile
.exists()) {
try
{
//
注意路径
Process p =
r
.exec(
"D:/Program
Files/SWFTools/pdf2swf.exe "
+
pdfFile
.getPath() +
" -o "
+
swfFile
.getPath() +
" -T 9"
);
p.waitFor();
swfFile
.createNewFile();
System.
out
.println(
"
第三步:转换为
SWF
格式
路径:
"
+
swfFile
.getPath());
System.
out
.println(
"
第
si
步:转换为
SWF
格式
mingcheng
:
"
+
swfFile
.getName());
if
(
pdfFile
.exists()) {
pdfFile
.delete();
}
用户评价