利用OpenOffice和FlexPaper创建类百度文库的预览

思路:
1.利用OpenOffice将文档型文件(doc,docx,xls,xlsx)转为化pdf文件;
2.利用SWFTools将pdf文件转为swf;
3.利用FlexPaper播放swf.

一、利用OpenOffice将文档型文件(doc,docx,xls,xlsx)转为化pdf文件
安装OpenOffice,并启动服务

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

执行telnet 127.0.0.1 8100,如果出现乱码则表示启动成功.
PS:当启动OpenOffice后,无法监听到8100端口时,请将-accpet里的参数host改为0.0.0.0尝试.
转化代码:

OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
try {
connection.connect();
} catch(Exception e) {
e.printStackTrace();
request.setAttribute("errorMsg", "没有安装OpenOffice,不能预览!");
return;
}
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(tempFile, outputFile);
connection.disconnect();

注意:tempFile是以doc,docx,xls或xlsx为文件后缀名的文件,outputFile为以pdf后缀的文件.
现在,就把pdf文件准备好了。
二、利用SWFTools将pdf文件转为swf

public static int convertPDF2SWF(String pdfName, String swfName) throws IOException {
//创建swf文件
File dest = new File(swfName);
//if (!dest.exists()) dest.mkdirs();

//源文件不存在则返回
File source = new File(pdfName);
if(!source.exists())
return 0;

//调用pdf2swf命令进行转换
// String command = "pdf2swf.exe" + " -o \"" + destPath + "\\" + fileName + "\" <span style="color: rgb(255, 0, 0);">-s languagedir=D:\\xpdf\\xpdf-chinese-simplified</span> -s flashversion=9 \"" + sourcePath + "\"";
Map<String, String> envMap = System.getenv();
Object home = envMap.get("PDF2SWF_HOME");
String path = null;
if(home != null) {
path = home.toString();
}
String command = path + File.separator + "pdf2swf.exe " + pdfName + " -o " + swfName + " " + "-T 9 -f";
Process pro = Runtime.getRuntime().exec(command);

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(pro.getInputStream()));
while(bufferedReader.readLine() != null)
;

try {
pro.waitFor();
} catch(InterruptedException e) {
e.printStackTrace();
}

return pro.exitValue();

}

注意,这儿使用了一个系统变量PDF2SWF_HOME,在windows下,安装好SWFTools后,做如下配置:“我的电脑”-右键“属性”-“高级”-“环境变量”,在“系统变量”点击“新建”,“变量名”为“PDF2SWF_HOME”,变量值为swftools的安装文件夹,如“D:\Program Files (x86)\SWFTools”,重新打开cmd窗口。
现在,swf文件也准备好了
三、利用FlexPaper播放swf

<body>
<a id="viewerPlaceHolder" style="width:920px;height:700px;display:block"></a>

<script type="text/javascript">
var fp = new FlexPaperViewer(
'<%=request.getContextPath()%>/swf/FlexPaperViewer',
'viewerPlaceHolder', { config : {
SwfFile : '<%=request.getContextPath()%>/htmlTemp/${fileName}.swf',
Scale : 0.6,
ZoomTransition : 'easeOut',
ZoomTime : 0.5,
ZoomInterval : 0.2,
FitPageOnLoad : true,
FitWidthOnLoad : true,
ProgressiveLoading : false,
MinZoomSize : 0.2,
MaxZoomSize : 5,
SearchMatchAll : false,
InitViewMode : 'SinglePage',

ViewModeToolsVisible : true,
ZoomToolsVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,
PrintEnable:false,
localeChain: 'en_US'
}});
</script>
</body>


最后,完成了.

小结:利用OpenOffice可以将文档型的文件转为了HTML、PDF等格式,但是,在转HTML时,效果不是很理想,主要是格式的问题.如果需要实现类似于163邮箱或QQ邮箱文档预览的功能也是可以的.
FlexPaper基本版是免费的,但有收费的版本,如果是企业级的应用,请注意.不过做个类似的东西也不难.
OpenOffice和SWFTOOL都是支持多平台的,无论windows或linux,都适用.

相关包:
引入jodconverter-2.2.2包,并引用相关其他包。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值