当前位置: 首页 » program » ubuntu » ubuntu 14.04 server linux+php+nginx+openoffice+unoconv+swftool 实现php调用linux命令转换word,ppt(1)

ubuntu 14.04 server linux+php+nginx+openoffice+unoconv+swftool 实现php调用linux命令转换word,ppt(1)

本文持续更新。
--------------------------------------------分割线----------------------------------------------
linux 服务器。要在线转换word ppt为pdf,jpg,swf.
openoffice 和wps都有接口可以调用。
本例用的openoffice.apache出品。但是不够稳定。有坑。
openoffice 旗下现在有liberoffice可用。比openoffice稳定。
可替代方案:
lnmp环境 => jsp环境 (openoffice需要安装jdk 需要java环境的支持。实现文档转换则是使用的python)
openoffice => liberoffice/wps 我用的openoffice 8100端口。shell测试中。注:我发现上传文件过大然后转换的时候,该进程会卡死。执行时间超过60min就会卡住不动,需要重启。所以解决方法:
(1)在前端处理分片 用webuploader 每片1M左右
(2)在后端处理
1 python处理
2 在shell脚本判断 当执行时间超过1个小时就重启该进程
unoconv 好像不装也行。我的openoffice用py 2.6的版本。有的人用3.0 我没装unoconv也能用。注1,注2.
swftool => flashpaper 亲测可用。

swftool 安装:
1.安装所需的库和组件
sudo apt-get install gcc* automake zlib-devel libjpeg-devel giflib-devel freetype-devel
2.下载并编译安装SWFTOOLS
cd /usr/local/src
wget http://www.swftools.org/swftools-0.9.1.tar.gz
tar vxzf swftools-0.9.1.tar.gz
cd swftools-0.9.1
./configure --prefix=/usr/swftools
make
make install
============================================
编译错误:
安装过程中,出现如下错误及解决办法:
错误1:
***************************************************
* The following headers/libraries are missing: ungif gif_lib.h
* Disabling gif2swf tool…
***************************************************
解决办法:
apt-get install giflib-devel
错误2:
***************************************************
* The following headers/libraries are missing: jpeglib t1lib ungif jpeglib.h freetype t1lib.h gif_lib.h
* Disabling pdf2swf tool…
* Disabling jpeg2swf tool…
* Disabling gif2swf tool…
***************************************************
解决办法:
apt-get install giflib-devel libjpeg-devel freetype-devel t1lib-devel
==========================================
3、设置swftools环境变量,使pdf2swf成为一个可执行命令
vi /etc/profile
export PATH=$PATH:/usr/local/swftools/bin/
执行下source /etc/profile 使环境变量生效。
4.安装xpdf语言包,下载xpdf-chinese-simplified.tar.gz文件,解压到/usr/local下,编辑add-to-xpdfrc文件,如下:
– 注:需要百度搜索下载xpdf-chinese-simplified.tar.gz 官方的下载太慢了。另外要将windows 字体库中的常用字体复制一份到/usr/share/fonts/win
vi /usr/local/xpdf-chinese-simplified/add-to-xpdfrc
fontDir /usr/share/fonts/win
displayCIDFontTT Adobe-GB1 /usr/share/fonts/win/simhei.ttf
swftools 对中文乱码问题
直接将windows系统的相关字体复制到linux字体目录下windows字体目录 c:\windows\fontslinux字体目录 /usr/share/fonts目前我只复制了以下字体
simfang.ttf 仿宋体
simhei.ttf 黑体
simkai.ttf 楷体
simsun.ttf 宋体和新宋体,原文件名simsun.ttc
tahoma.ttf tahoma字体
tahomabd.ttf tahoma字体的粗体形式
verdana.ttf verdana字体
verdanab.ttf verdana字体的粗体形式
verdanai.ttf verdana字体的斜体形式
verdanaz.ttf verdana字体的粗体+斜体形式 在CentOS目录里新建一个win文件夹
# mkdir /usr/share/fonts/win
# chmod 644 /usr/share/fonts/win/*将以上字体文件复制到/usr/share/fonts/win目录下执行
# mkfontscale
# mkfontdir # mkfont命令是生成win目录下所包含的字体的索引信息
# fc-cache # fc-cache命令更新字体缓存
# fc-cache -f –v
5、最后使用如下转换命令测试:
– 注:1.pdf是要存在的文件
//转化为swf
pdf2swf -s languagedir=/usr/local/xpdf-chinese-simplified -T 9 -s poly2bitmap -s zoom=150 -s flashversion=9 “/usr/local/src/1.pdf” -o “/usr/local/src/1.swf”
//转化为txt纯文本
pdftotext -q “/usr/local/src/1.pdf” “/usr/local/src/1.txt”
博客园文章转载:一个centos下该环境的搭建。还不错。
http://www.cnblogs.com/xcp19870712/p/4105200.html

注1: unoconv是一个.doc转pdf 的好工具。安装他apt-get install即可。但是小心依赖包的问题。
如果在文档转换过程中报错如下:
solved: createInstanceWithContext: Binary URP bridge disposed during call
有可能是因为缺失unoconv组件。在openoffice自带uno可用。但是完美转换好像还是用这个的?

注2:unoconv 安装时候可能出现的错。
1. sudo apt-get install unoconv
2.安装出错或者无法解析或打开软件包的列表或
是状态文件或者无法找到软件包时候
sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update
3.重新安装,后测试
unoconv -f pdf /opt/333.doc
出现错误:
Error: Unable to connect or start own listener. Aborting.
重新执行下就好了
4.打开测试文件,发现中文乱码
5.如果无法执行命令,出现初始化月份字符串出错之类的错误,修改系统配置
vi /var/lib/locales/supported.d/local
在其中增加:
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
然后:
locale-gen
vi /etc/default/locale
这里应该是很重要的一步:
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_MONETARY="zh_CN"
LC_PAPER="zh_CN"
LC_NAME="zh_CN"
LC_ADDRESS="zh_CN"
LC_TELEPHONE="zh_CN"
LC_MEASUREMENT="zh_CN"
LC_IDENTIFICATION="zh_CN"
因为之前错误时,仍能显示“月”字,而数字无法显示,所以在LC_NUMBERIC="zh_CN"要改成"zh_CN.UTF-8"
下面的LC_TIME也改一下。其它的用不着的就懒得去改了。
保存,重启。
ls -l显示,正常了。
6.如果转换中文有乱码,应该是系统字体问题,把windows字体拿过来就行了
具体过程参考:http://blog.csdn.net/only_jing1314/article/details/47999615


下一篇 :

上一篇 :

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注