最近在做项目时需要在Web端预览一些Office文件,经过在万能的互联网上一番搜索确定并解决了。
虽然其中碰到的一些问题已经通过搜索和自己研究解决了,但是觉得有必要将整个过程记录下来,以方便自己以后查找,也方便以后碰到相同问题的朋友。
首先大家都知道在浏览器中是无法直接直接打开office文件查看的(IE除外),所以我们需要将office文件转换成其他格式来预览。
所以我的实现方法是 office文件=>pdf文件=>swf文件=>flexpaper中浏览
我们用到的软件如下:
1、libreoffice
2、swftools
3、flexpaper
4、sharp_office 一个gem
5、ImageMagick
环境: ubuntu 14.04
一、安装libreoffice
sudo apt-get install python-software-properties
sudo apt-add-repository ppa:libreoffice/libreoffice-4-0
sudo apt-get install libreoffice
如果是ubuntu server环境,这里需要安装一个中文字体,否则转换出来的PDF文件中的中文将全部是乱码,具体安装方法参考这里:libreoffice转换文件为pdf文件乱码问题解决办法
二、安装swftools
下载 http://www.swftools.org/download.html
解压 tar -zvxf swftools-0.x.x.tar
编译 cd swftools-0.x.x;./configure;make 安装 make install
可能会报错
rm:无效选项 -- o
Try 'rm --help' for more information.
make[]: *** [install] 错误
编辑 swfs/Makefile 和 swfs/Makefile.in两个文件 找到 rm 命令,去掉后面的 -o -L 保存,再次install即可
详情可以参考这里: ubuntu下 编译安装swftools (之前碰到问题时的记录)
三、FlexPaper,这是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与swftools一起使用,只需要下载然后嵌入到网页中即可。
四、sharp_office 这是一个ruby gem,我们使用它来调用命令转换office文件到pdf文件和swf文件
gem install sharp_office
由于我需要在老版本的ruby中使用,当前这个sharp_offce只适用于ruby1.9以上版本,所以我基于sharp_offce修改并发布了我的版本sharp_office_bruce
所以现在可以这样安装 gem install sharp_office_bruce
五、ImageMagic
由于sharp_office转换office文件至pdf文件和swf文件时,会同时调用ImageMagic生成缩略图,所以需要安装它
sudo apt-get install imagemagick libmagickcore-dev gs
六、转换程序
require 'sharp_office' SharpOffice.process('/Users/apple/Documents/test.doc')
=> {:status=>"ok", :pdf_path=>"/Users/apple/Documents/test-doc.pdf", :swf_path=>"/Users/apple/Documents/test-doc.swf", :cover_path=>"/Users/apple/Documents/test-doc.png"} SharpOffice.process('/Users/apple/Documents/test.doc', {pages: '1-20'})
=> {:status=>"ok", :pdf_path=>"/Users/apple/Documents/test-doc.pdf", :swf_path=>"/Users/apple/Documents/test-doc.swf", :cover_path=>"/Users/apple/Documents/test-doc.png"}