关闭

Ubuntu 服务器 PHP实现word、excel、ppt、pdf 等文档在线阅读功能的实现

标签: ubuntuphp文档在线阅读openofficeswftools
2357人阅读 评论(1) 收藏 举报
分类:

1、实现原理思路

要实现 word 等文档在线阅读,需要将文档转换成 swf 的 flash 文件,然后结合 flexpaper ,在页面上阅读显示。

这个转换过程有些复杂,首先需要我们把上传的文件转换成 pdf 格式的文件,然后在把 pdf 格式的文件转换为 swf 的格式。这个转换过程需要三个软件:

openoffice 软件可以把 word 等格式的文件转换成 pdf 

jodconverter 软件是java 的开放文档转换器,实际上是 jodconverter 调用openoffice 软件来转换文件,用这个软件还需要系统支持Java 环境,需要安装Java JDK

swftools 的 pdf2swf  可以把 pdf 格式的文件转换成 swf 格式

2、安装软件

系统环境:Ubuntu 12.04-server

下载软件:

Java JDK (最好先安装Java 环境,安装openoffice 可能会用的,我是先安装的 openoffice ,但是安装时报个跟Java相关的错误,然后我用 apt-get install openoffice.org-java-common 这个就没什么问题了,如果先安装Java,就不用在安装这个了)

到这个地址去下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 找好相应的 Linux 版本,这里我下载的 jdk-7u45-linux-x64.tar.gz 版本,然后解压缩放到相应位置(我放到 /usr/java),然后修改系统的配置文件 /etc/environment ,将刚刚的Java 路径添加的 PATH 里面:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/java/bin"

要使刚刚的配置文件生效,需要执行下:source /etc/environment

这里有片详细的安装文章,可以参考:http://www.cnblogs.com/fnng/archive/2013/01/30/2883815.html

openoffice 3.4.1 版本:

wget  http://jaist.dl.sourceforge.net/project/openofficeorg.mirror/localized/zh-CN/3.4.1/Apache_OpenOffice_incubating_3.4.1_Linux_x86-64_install-deb_zh-CN.tar.gz

openoffice SDK

wget  http://jaist.dl.sourceforge.net/project/openofficeorg.mirror/stable/3.4.1/Apache_OpenOffice_incubating-SDK_3.4.1_Linux_x86-64_install-deb_en-US.tar.gz

JODConverter

wget   http://jaist.dl.sourceforge.net/project/jodconverter/JODConverter/2.2.2/jodconverter-2.2.2.zip

swftools 0.9.1 版本

wget   http://www.swftools.org/swftools-0.9.1.tar.gz

3、安装软件

安装顺序为Java JDK ,openoffice主程序,openoffice sdk,jodconverter(Java JDK的安装参照上面)

第一步安装 openoffice 主程序:

tar -zxvf  Apache_OpenOffice_incubating_3.4.1_Linux_x86-64_install-deb_zh-CN.tar.gz   解压缩

cd  zh-CN/DEBS  进入到openoffice 的程序目录

dpkg  -i   *.deb  安装所有.deb 格式的文件

第二步安装 openoffice sdk :

tar  -zxvf  Apache_OpenOffice_incubating-SDK_3.4.1_Linux_x86-64_install-deb_en-US.tar.gz  解压缩文件

cd  en-US/DEBS   进入到程序安装文件目录

dkpg  -i  *.deb  安装deb 文件

安装位置:openoffice 软默认安装在  /opt/openoffice 和  /opt/openoffice3 下面

启动服务:/opt/openoffice.org3/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

可以用 netstat -a | grep 8100   命令来查看端口,或者 用 ps -ef|grep soffice 查看程序进程

然后将openoffice 设置为开机启动:

将 /opt/openoffice.org3/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard & 添加到  /etc/rc.local 文件里

第三步安装 jodconverter-2.2.2:

JODConverter其实不用安装 解压了就行,安装了这个之后就已经可以实现DOC转PDF了。

unzip jodconverter-2.2.2.zip  解压

mv  jodconverter-2.2.2  /opt  移动到 /opt 目录下

接下来,就可以测试将doc xls pptx 等文件转换为 pdf 文件了:

java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /home/download/1.doc  /home/download/1.pdf

但是现在还有一个问题,你会发现如果你转换的是 中文的文档,转换完的pdf 文件会显示乱码,原因是openoffice 软件没有安装中文字体:

解决方法:给 openoffice 软件安装 宋体、黑体等字体,可以直接打开你系统的 C盘的 C:\Windows\Fonts 目录下面的 simsong.ttf simhei.ttf 等中文字体上传到openoffice的字体目录 /usr/share/fonts/truetype/openoffice 目录下,即可

第四步安装 swftools :

安装 swftools 需要依赖 freetype、jpeglib 两个类库:

下载 freetype : wget  http://ftp.twaren.net/Unix/NonGNU//freetype/freetype-2.4.12.tar.gz

下载 jpeglib :   wget  http://www.ijg.org/files/jpegsrc.v9.tar.gz

这两个文件分别解压缩后,进入文件夹,编译源码安装即可:

tar  -zxvf  freetype-2.4.12.tar.gz

cd  freetype-2.4.12

./configure

make 

make install

jpegsrc.v9.tar.gz 安装同 freetype

接下来安装swftools :

tar -zxvf  swftools-0.9.1.tar.gz

cd  swftools-0.9.1

./configure 

make 

make install

swftools 安装完成,接下来安装swftools 的 xpdf 和 字体:

wget ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz

wget http://www.nginxs.com/download/font.zip

解压 xpdf-chinese-simplified.tar.gz 和 font.zip 并修改配置文件

tar -zxvf  xpdf-chinese-simplified.tar.gz

unzip  font.zip 

mv Gbsn00lp.ttf gkai00mp.ttf xpdf-chinese-simplified/CMap/

把 xpdf-chinese-simplified 移动到 /usr/share/xpdf

mkdir -p /usr/share/xpdf

mv xpdf-chinese-simplified /usr/share/xpdf

修改配置文件

cd   /usr/share/xpdf/xpdf-chinese-simplified

vim  add-to-xpdfrc

将下面的内容覆盖掉add-to-xpdfrc文件中相同的部分

cidToUnicode    Adobe-GB1       /usr/share/xpdf/xpdf-chinese-simplified/Adobe-GB1.cidToUnicode
unicodeMap      ISO-2022-CN     /usr/share/xpdf/xpdf-chinese-simplified/ISO-2022-CN.unicodeMap
unicodeMap      EUC-CN          /usr/share/xpdf/xpdf-chinese-simplified/EUC-CN.unicodeMap
unicodeMap      GBK             /usr/share/xpdf/xpdf-chinese-simplified/GBK.unicodeMap
cMapDir         Adobe-GB1       /usr/share/xpdf/xpdf-chinese-simplified/CMap
toUnicodeDir                    /usr/share/xpdf/xpdf-chinese-simplified/CMap
displayCIDFontTT        Adobe-GB1       /usr/share/xpdf/xpdf-chinese-simplified/CMap/gkai00mp.ttf

OK  swftools 现在已经安装完成,可以转换个pdf 文件测试下:

pdf2swf -o 1.swf -T -z -t1.pdf -s languagedir=/usr/share/xpdf/xpdf-chinese-simplified -s flashversion=9

OK 在PHP 程序中可以在上传完成后,调用这两个命令把文档转换为最终的 swf 文件,前端页面结合 flexpaper 显示即可


0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21488次
    • 积分:517
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:7篇
    • 译文:0篇
    • 评论:1条