您的位置:首页 > 运维架构 > Linux

帝国CMS在CentOS环境下实现在线文档网站(类似百度文库)

2014-11-07 00:00 661 查看
最近花了几个星期的时间,折腾了一个在线文档网站,类似百度文库的功能,主要涵盖教育类文档。
测试的话是在windows环境下,不细述,主要概述一下centos环境下的部署:
系统环境:CentOs6.2
web环境:apache2,mysql5,php5
CMS系统:帝国CMS(基于文档下载系统开发)
用到的工具:Openoffice 3.4.1 , pdf2swf tools, jodconverter , flexpaper
网上百度/谷歌来的资料,基本上都是用java来写的,如果在帝国CMS(PHP开发)中调用Servlet,比较繁琐,且效率较低,所以考虑用PHP代码来实现。大致思路参考了网上的资料:
实现步骤: 1. Office文件(doc/ppt/xls)上传 2. Office转成PDF 3. PDF转成SWF 4. 用Flexpaper显示SWF文件
基于对CentOS环境引入openoffice sdk + pdf2swf tool,分两个步骤,先利用openoffice sdk把文档统一转成pdf,然后利用pdf2swf tools把pdf转成swf
实现过程
要实现DOC转成PDF,在LINUX下面有OpenOffice可以实现。
那么首先需要的是安装Openoffice:
1.网上下载OpenOffice:选择Linux x86-64 RPM简体中文版下载
2.解压:tar zvxf Apache_OpenOffice_incubating_3.4.1_Linux_x86-64_install-rpm_zh-CN.tar.gz
3.进入目录:cd zh-CN/RPMS
4.安装:rpm -ivh *.rpm --nodeps –force 安装后的默认目录是在:/opt/目录下面
5.启动服务:/opt/openoffice.org3/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
6.在CentOs下面会缺少黑体和宋体的,直接找到Windows下面的字体目录把黑体和宋体复制进去到如下目录:
/opt/openoffice.org/basis3.3/share/fonts/truetype/ 需要重启后才会生效
接下来安装OpenOffice SDK3.3:
1.下载:选择Linux x86-64 RPM SDK下载
2.解压:tar zxvf OOo-SDK_3.4.1_Linux_x86-64_install-rpm_en-US.tar.gz
3.进入目录:cd en-US/RPMS/
4.安装:rpm -vih *.rpm
然后安装jodconverter.2.2.2,安装了这个之后就已经可以实现DOC转PDF了。
这个安装很简单,直接上网站下一个这个压缩文件回来。
解压,复制到一个目录里面去,就能直接用了,调用它里面的/lib/jodconverter-cli-2.2.2.jar这个玩意儿就行,可以直接运行命令测试:

java -jar /usr/local/wenku/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar test.doc test.pdf

下面安装SWFTools:
中文支持安装:

mkdir –p /usr/local/share/xpdf
cd /usr/local/share/xpdf/
下载中文支持及字体库 wget ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz wget http://www.nginxs.com/download/font.zip tar zxvf xpdf-chinese-simplified.tar.gz
unzip font.zip
mv Gbsn00lp.ttf gkai00mp.ttf xpdf-chinese-simplified/CMap/
cd /usr/share/xpdf/xpdf-chinese-simplified
编辑,加入新增的字体:vim add-to-xpdfrc  内容如下:
cidToUnicodeAdobe-GB1/usr/share/xpdf/chinese-simplified/Adobe-GB1.cidToUnicode
unicodeMapISO-2022-CN/usr/share/xpdf/chinese-simplified/ISO-2022-CN.unicodeMap
unicodeMapEUC-CN/usr/share/xpdf/chinese-simplified/EUC-CN.unicodeMap
unicodeMapGBK/usr/share/xpdf/chinese-simplified/GBK.unicodeMap
cMapDirAdobe-GB1/usr/share/xpdf/chinese-simplified/CMap toUnicodeDir/usr/share/xpdf/chinese-simplified/CMap
displayCIDFontTT Adobe-GB1 /usr/share/xpdf/chinese-simplified/CMap/gkai00mp.ttf


保存后退出
SwfTool安装:

cd /usr/local/wenku
wget http://www. href="http://www.phpxs.com/tag/swftools" target=_blank>swftools.org/swftools-0.9.1.tar.gz
tar zxvf swftools-0.9.1.tar.gz
cd swftools-0.9.1
./configure
make
make install


测试一下是否可用:pdf2swf -o /path/test.swf -T -z -t -f /path/test.pdf -s languagedir=/usr/share/xpdf/xpdf-chinese-simplified -s flashversion=9
如果测试成功,那么就已经OK一大半了,接下来就是显示的问题了。
最后用FlexPaper实现在线预览
这个是网上下载吧,模仿demo改下JS就行了,里面是用的JS读取SWF的路径,这个简单吧,不讲了。
最后在帝国CMS添加下载文件地址时,用Ajax异步提交调用PHP来调用LINUX命令实现转换:


当添加下载地址完成后,捕捉到该input失去焦点事件调用ajax实现文档转化功能:
1.在AddNews.php中找到<div id="TabPane1">,在下面添加一段js代码:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>


2.往下在

<?php
    include($modfile);
?>


之下添加js代码如下:


下面在某一目录(根据个人习惯)下创建doc2swf.php文件,代码如下:


这样就实现了文档上传自动转化为可通过flexpaper在线显示的swf文件格式了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  帝国CMS CMS
相关文章推荐