类似百度文库的文档在线预览实现方法

 做这个东西很久了现在终于做完了,看着一台满足需求的电脑运行觉得心里很是舒服。

很想写下来,我相信这个需求挺多人又需要的吧,我就决定记录下来,帮助大家少走弯路,同时重要的也是我自己的一个记录。

1.需求

我们上传的ppt、pptx、doc、docx、txt等等,都希望像现在的百度文库一样提供给用户预览文档内容的功能。

2.环境

我的环境:centos、openoffice、pdf2swf、flexpaper、httpsqs

其中:openoffice是用来将文档转换为pdf格式的文件,然后pdf2swf是用来将pdf格式的文件转换为swf格式的文件。最后使用flexpaper将swf呈现在浏览器中,供用户浏览。httpsqs则是队列服务器,下面就知道它的用处了。

3.开始建设

在网上搜索此类的主题,有很多相关的知识,但是比较重要的几点却很难找到。比如:应用和转换分离怎么做?用户不能提交一个文档还要等你转换半天再反应啊,所以要有个东西来记录用户的转换请求,然后用户正常的进行其他的操作。我这里使用的就是httpsqs队列服务器。

代码如下:

if(!extName.equals("pdf")){
//fileup.uploadFile(7, filename, file.getInputStream());
//pdf文件转换,目录请根据需要进行调整
doc2pdf = "soffice --nologo --nofirststartwizard --headless --convert-to pdf :writer_pdf_Export --outdir /home/test/pdf /home/test/eleTeachPlan/"
+ filename ;
pdf2swf = "pdf2swf -i /home/test/pdf/" + fileNameWithoutExtName + ".pdf" + " -T 9 -o /home/test/swf/" + fileNameWithoutExtName + ".swf";
}else{
pdf2swf = "pdf2swf -i /home/test/eleTeachPlan/" + filename + " -T 9 -o /home/test/swf/" + fileNameWithoutExtName + ".swf";
} if(doc2pdf != null){
//client.putString(new String (doc2pdf.getBytes("UTF-8")));
//默认文件名采用的是gbk2312编码
client.putString(doc2pdf);
}
//client.putString(new String (pdf2swf.getBytes("UTF-8")));
client.putString(pdf2swf);




client是一个httpsqs客户端,当检测到文件的扩展名不是pdf的话,那么需要用soffice命令转换文档,所以发出了"doc2pdf"和"pdf2swf"两个命令,先将文档转换为pdf格式,然后再将之转换为swf格式,这样就可以正常的预览了。

使用putString方法放到队列服务器中的转码命令,需要用客户端将它读出来放在linux上执行,就可以正常的转换了。这里请参考我的上一篇博客。

4.其他

其他的关于安装,flexpaper使用等等网上的内容一堆,就不重复说了。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值