php 实现百度文库搭建
第一步:安装jodconverter,安装之后可以实现doc文档转成pdf。
文件下载地址为http://www.artofsolving.com/opensource/jodconverter
下载了之后直接解压,解压到/opt目录下/opt/jodconverter-2.2.2/,使用到的文件是安装包内的lib/jodconverter-cli-2.2.2.jar。
测试是否可以使用
- java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /home/php/1.doc /home/php/1.pdf
这里提示缺少java软件包,并会提示几个安装包供。选择我安装openjdk-6-jre-headless,命令如下:
- sudo apt_get openjdk-6-jre-headless
安装之后再运行上面doc转pdf的命名,会提示openoffice进程未启动,
因为JODConverter是通过OpenOffice來做转换的 ,所以使用前需要先安裝OpenOffice, 並且將OpenOffice的Service启动, 才可以使用. 启动命令
sudo /usr/bin/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp" -nofirststartwizard
到此运行上面的doc转pdf的命令已经可以成功。
如果系统没有按照openoffice或者曾经安装过liboffice
参考下面步骤
如果系统安装了libreoffice
参考下面步骤
如果安装了libreoffice 执行 sudo apt-get purge libreoffice*
一、下载“openOffice.org”的DEB安装包
到中文官网上下载DEB安装包 , 网址:http://download.openoffice.org/other.html#en-US,现在(2011年6月1日)的最新版是 3.3.0,我下载的文件是“OOo_3.3.0_Linux_x86_install-deb_zh-CN.tar.gz”。并将下载的文件复制到主目
录(即当前登录用户的主目录,这样所在文件夹名字不带汉字,可防发生意外)下。
二、卸载“LibreOffice”
利用“新立得”或“软件中心”卸载“LibreOffice”。用新立得卸载时,在新立得中搜索“LibreOffice”,结果中有“LibreOffice”的已安装文件一律卸载。
三、安装“openOffice.org”:
1、解压文件
打开终端,输入命令:
sudo tar -zxvf Ooo_3.3.0_Linux_x86_install-deb_zh-CN.tar.gz,得到文件夹“OOO330_m20_native_packed-1_zh-CN.9567”。
2、进入解压后的文件夹中的“DEBS”文件夹
命令:cd ./OOO330_m20_native_packed-1_zh-CN.9567/DEBS 。
3、安装主文件
命令:sudo dpkg -i *.deb 安装“DEBS”包内的全部“.deb”文件。此包内的文件全部安装后,在系统菜单的“办公”菜单下还不能找到“openOffice.org”的快捷方式,继续安装。
4、进入“DEBS”包内的“desktop-integration”文件夹
命令:cd desktop-integration 。
5、安装“openOffice.org”的快捷方式
安装“desktop-integration”文件夹内的“.deb”文件,命令:
sudo dpkg -i *.deb,此命令执行完后,如果没有错误提示,OK。这时你就可在系统菜单中的“办公”菜单中找到“openOffice.org”的快捷方式了。
第二步:安装swftools,安装之后可以实现pdf文件转成swf
- wget http://www.swftools.org/swftools-0.9.1.tar.gz
- tar xzf swftools-0.9.1.tar.gz
- cd swftools-0.9.1
- ./configure
- make
- make install
测试是否可以使用
pdf2swf -o /home/php/1.swf -z -t -f /home/php/1.pdf -s flashversion=9
第三步:用FlexPaper实现在线预览,里面有详细的demo。
第四步:使用php测试文档转换命令:
文档转pdf
- <?php
- $doc = './docs/test.txt';
- $formatName = './pdf/test.pdf';
- $command = 'java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar '.$doc.' '.$formatName;
- exec($command);
- echo 'ok';
pdf转swf
- <?php
- $pdf = './pdf/test.pdf';
- $swf = './swf/test.swf';
- $command = '/usr/local/wenku/swftools-0.9.1/src/pdf2swf -o '.$swf.' -T -z -t -f '.$pdf.' -s flashversion=9';
- exec($command);
- echo 'ok';
php脚本去运行上面的命令可能存在权限的问题无法执行
其中我测试使用的php脚本调用pdf2swf进行转换文件,生成不了。这样只需配置apache的用户权限即可,确保配置的用户有权限运行pdf2swf命令
默认安装的php环境ubuntu下配置文件是/etc/apache2/apache2.conf修改这两行,
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_USER}
配置完之后,重启apache。
/etc/init.d/apache2 restart
到此linux下的安装配置就结束了。
window下测试
下载window下使用的Pdf2Swf tool和FlexPaper,手动的将pdf文件转swf后进行在线查看的功能。
步骤整理如下:
1.安装Pdf2Swf tool之后,进行将pdf转swf。cmd命令行:
pdf2swf.exe -t D:\wamp5.3\www\test\pdf\c.pdf -s flashversion=9 -o D:\wamp5.3\www\test\swf\c.swf
-t: 源文件路径,即待转换的pdf文件路径。
-s: 设置参数,这里我们设置为 flashversion=9 ,即可以转换为9 的版本啦。
-o: 输出文件的路径,这里我输出到D:盘下
运行的结果如图所示:
2.使用FlexPaper插件显示浏览swf文件。这里下载使用的版本是1.5.8 Flash Version (release notes)。软件包内就已经有html版本的demo,稍微改动下句可以实现了。
代码如下:
- <script src="js/flexpaper_flash.js" type="text/javascript"></script>
- <a id="viewerPlaceHolder" style="width:680px;height:480px;display:block;"/></a>
- <script type="text/javascript">
- var fp = new FlexPaperViewer(
- 'FlexPaperViewer',
- 'viewerPlaceHolder', { config : {
- SwfFile : escape('c.swf'),
- Scale : 0.1,
- ZoomTransition : 'easeOut',
- ZoomTime : 0.5,
- ZoomInterval : 0.2,
- FitPageOnLoad : true,
- FitWidthOnLoad : false,
- FullScreenAsMaxWindow : false,
- ProgressiveLoading : false,
- MinZoomSize : 0.2,
- MaxZoomSize : 5,
- SearchMatchAll : false,
- InitViewMode : 'Portrait',
- PrintPaperAsBitmap : false,
- ViewModeToolsVisible : true,
- ZoomToolsVisible : true,
- NavToolsVisible : true,
- CursorToolsVisible : true,
- SearchToolsVisible : true,
- localeChain: 'en_US'
- }})
- </script>
上面为ubuntu环境安装
centos安装如下
第一步安装openoffice
安装最新的openoffice 需要最新的系统,redhadserver5.5不行,因为里面GLIBC最高是2.5的,最新的openoffice需要GLIBC_2.11。所以openoffice安装到了线上的阿里云上面的CentOS 6.2上面。
1:下载最新的 openoffice
地址:
下载文件。
2:下载完成后解压
tar xfApache_OpenOffice_incubating_3.4.1_Linux_x86-64_install-rpm_zh-CN.tar.gz
[root~]# tar xfApache_OpenOffice_incubating_3.4.1_Linux_x86-64_install-rpm_zh-CN.tar.gz
3.安装软件
[root~]# cd zh-CN/
[root~]# cd RPMS
安装所有的rpm
[root~]# yum localinstall *.rpm //注意,请用 yum localinstall 而不是 yum install
然后再安装desktop-integration下的openoffice.org3.4-redhat-menus-3.4-9593.noarch.rpm
注意可能需要重新安下openoffice.org-ure-3.4.1-9593.x86_64.rpm 这个rpm 在RPMS目录下
4.启动服务
进入安装目录/opt/openoffice.org3/program
执行命令:soffice-headless -accept="socket,host=127.0.0.1,port=8100;urp;"-nofirststartwizard &
安装如果报错: javaldx: Could not find a Java Runtime Environment!
可能遇到的问题1
[program~]$ soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard&
[1] 3094
[program~]$ /opt/openoffice.org3/program/soffice.bin: error while loading sharedlibraries: libuno_sal.so.3: cannot open shared object file: No such file ordirectory
[1]+ Exit 127 soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
解决方法
重新装openoffice.org-ure-3.4.1-9593.x86_64.rpm
进入RPMS 目录
[program~]$ sudorpm -ivh openoffice.org-ure-3.4.1-9593.x86_64.rpm
Preparing... ########################################### [100%]
1:openoffice.org-ure ###########################################[100%]
然后重新进入
[keylogic@AY1303191548348936fe RPMS]$ cd/opt/ openoffice.org3/program/
可能遇到的问题2
Openoffice启动是要java支持的,所有系统要先安装java
第二步:安装swf
如果机器没有安装gcc
安装gcc
====================================
在阿里云安装gcc
[root~]# yum install gcc
遇到类似以下的错误
Error: Package:glibc-headers-2.12-1.80.el6_3.6.x86_64 (updates)
Requires: kernel-headers >= 2.2.1
Error: Package:glibc-headers-2.12-1.80.el6_3.6.x86_64 (updates)
Requires: kernel-headers
解决办法:
注释掉/etc/yum.conf中的
exclude=kernel*
这一行
=======================================
解决在CentOS5.5 64bit 下编译安装失败需要先安装如下软件。
# yum -y install giflib-devel libjpeg-develfreetype-devel t1lib-devel zlib
第一步:下载源文件
http://www.swftools.org/swftools-2013-04-09-1007.tar.gz
# tar xfswftools-2013-04-09-1007.tar.gz
# cdswftools-2013-04-09-1007
# ./configure
# make
# make install
遇到的问题
这个可能是 缺少gcc或者g++
[root~]# yum install gcc-c++
还可能有依赖包
yum-y install giflib-devel libjpeg-devel freetype-devel t1lib-devel zlib
还可能遇到的问题
modules/.././types.h:39:2: 错误:#error "no way to define 64 bit integer"
modules/.././types.h:42:2: 错误:#error "don't know how to define 32 bit integer"
modules/.././types.h:45:2: 错误:#error "don't know how to define 16 bit integer"
modules/.././types.h:48:2: 错误:#error "don't know how to define 8 bit integer"
解决方法:
[root~]# ldconfig /usr/local/lib
然后再执行
[root~]# ldconfig /usr/local/lib
[root~]# ./configure
解决字体问题
swftools 对中文乱码问题
需要把windows的字体复制到linux上。
字体位置:C:\Windows\Fonts
把字体文件打包传到服务器上。
============网上参考别人的东西 开始==============
# 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
然后运行reboot 重启系统。字体美化就OK了!
============网上参考别人的东西 结束==============
以下是我的执行步骤
1:把 C:\Windows\Fonts 下的所有文件包。
2:把打包的fonts.zip 传到 /usr/share/fonts/
3:解压fonts.zip
4:进入这个目录执行 mkfontscale mkfontdir c-cache fc-cache -f –v
5:重新启动系统。
可能遇到的问题
没有mkfontscale 命令
解决方法
[]$sudo yum install mkfontscale
中文无法显示问题
jodconverter 转换不了中文
将Windows下的字体C:\Windows\Fonts\simsun.ttc 还有simhei.ttf黑体 拷贝到 openoffice 目录:eg: /usr/lib/openoffice.org1.9.104/share/fonts/truetype/simsun.ttc
安装xpdf语言包,解决中文无法显示问题
对于未安装xpdf的用户
pdf2swf在将pdf文件转换成swf文件时,如果pdf中有中文,那么pdf2swf就可能处理不了,这时就需要在pdf2swf生成时添加xpdf支持,接下来我们就来看看如何安装xpdf。
首先到xpdf网站:http://foolabs.com/xpdf/download.html上下载xpdf-chinese-simplified.tar.gz文件(ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz),windows与linux皆适用,下载下来后,解压到某一特定目录,然后将本文附件当中名为stsong.tar.gz文件下载下来,解压后将其中的STSONG.TTF字体文件放在xpdf-chinese-simplified所在目录下的CMap目录下,然后打开xpdf-chinese-simplified所在目录下add-to-xpdfrc文件,源文件内容如下:
#----- begin Chinese Simplified support package ( 2011 -sep- 02 ) cidToUnicode Adobe-GB1 /usr/local/share/xpdf/chinese-simplified/Adobe-GB1.cidToUnicode unicodeMap ISO- 2022 -CN /usr/local/share/xpdf/chinese-simplified/ISO- 2022 -CN.unicodeMap unicodeMap EUC-CN /usr/local/share/xpdf/chinese-simplified/EUC-CN.unicodeMap unicodeMap GBK /usr/local/share/xpdf/chinese-simplified/GBK.unicodeMap cMapDir Adobe-GB1 /usr/local/share/xpdf/chinese-simplified/CMap toUnicodeDir /usr/local/share/xpdf/chinese-simplified/CMap #fontFileCC Adobe-GB1 /usr/..../gkai00mp.ttf #----- end Chinese Simplified support package |
从原文件中可以看到,其中关于字体路径信息是基于linux的,所以如果要根据你的xpdf-chinese-simplified目录实际存放位置进行修改,
- 如linux下修改后的内容为:
#----- begin Chinese Simplified support
package
(
2011
-sep-
02
)
cidToUnicode Adobe-GB1 /usr/local/share/xpdf/chinese-simplified/Adobe-GB1.cidToUnicode
unicodeMap ISO-
2022
-CN /usr/local/share/xpdf/chinese-simplified/ISO-
2022
-CN.unicodeMap
unicodeMap EUC-CN /usr/local/share/xpdf/chinese-simplified/EUC-CN.unicodeMap
unicodeMap GBK /usr/local/share/xpdf/chinese-simplified/GBK.unicodeMap
cMapDir Adobe-GB1 /usr/local/share/xpdf/chinese-simplified/CMap
toUnicodeDir /usr/local/share/xpdf/chinese-simplified/CMap
displayCIDFontTT Adobe-GB1 /usr/share/xpdf-chinese-simplified/CMap/STSONG.TTF
#fontFileCC Adobe-GB1 /usr/..../gkai00mp.ttf
#----- end Chinese Simplified support
package
- 如果系统为windows,那么修改后的内容可能是下面的样子:
#----- begin Chinese Simplified support
package
(
2011
-sep-
02
)
cidToUnicode Adobe-GB1 D:/xpdf-chinese-simplified/Adobe-GB1.cidToUnicode
unicodeMap ISO-
2022
-CN D:/xpdf-chinese-simplified/ISO-
2022
-CN.unicodeMap
unicodeMap EUC-CN D:/xpdf-chinese-simplified/EUC-CN.unicodeMap
unicodeMap GBK D:/xpdf-chinese-simplified/GBK.unicodeMap
cMapDir Adobe-GB1 D:/xpdf-chinese-simplified/CMap
toUnicodeDir D:/xpdf-chinese-simplified/CMap
displayCIDFontTT Adobe-GB1 D:/xpdf-chinese-simplified/CMap/STSONG.TTF
#fontFileCC Adobe-GB1 D:/xpdf-chinese-simplified/gkai00mp.ttf
#----- end Chinese Simplified support
package
对于已安装xpdf的用户
已配置过 epel 源的CentOS为例,可以通过如下命令直接安装xpdf
yum install xpdf |
然后执行如下命令
ln -s /etc/xpdf/add-to-xpdfrc.chinese-simplified /usr/share/xpdf/chinese-simplified/add-to-xpdfrc |
上传字体到/usr/share/fonts/default/truetype/stsong/STSONG.TTF
修改/usr/share/xpdf/chinese-simplified/add-to-xpdfrc文件
#----- begin Chinese Simplified support package ( 2004 -jul- 27 ) cidToUnicode Adobe-GB1 /usr/share/xpdf/chinese-simplified/Adobe-GB1.cidToUnicode unicodeMap ISO- 2022 -CN /usr/share/xpdf/chinese-simplified/ISO- 2022 -CN.unicodeMap unicodeMap EUC-CN /usr/share/xpdf/chinese-simplified/EUC-CN.unicodeMap unicodeMap GBK /usr/share/xpdf/chinese-simplified/GBK.unicodeMap cMapDir Adobe-GB1 /usr/share/xpdf/chinese-simplified/CMap toUnicodeDir /usr/share/xpdf/chinese-simplified/CMap #displayCIDFontTT Adobe-GB1 /usr/..../gkai00mp.ttf displayCIDFontTT Adobe-GB1 /usr/share/fonts/ default /truetype/stsong/STSONG.TTF #----- end Chinese Simplified support package |
上传xpdf-chinese-simplified.tar.gz压缩包的CMap目录到/usr/share/xpdf/chinese-simplified
即可。
使用命令
pdf2swf -s languagedir=/usr/local/xpdf-chinese-simplified -T 9 -s poly2bitmap -s zoom=150 -s flashversion=9 "/opt/123.pdf" -o "/opt/test/%.swf"