首页 > 代码库 > php 实现百度文库搭建

php 实现百度文库搭建

第一步:安装jodconverter,安装之后可以实现doc文档转成pdf。

文件下载地址为http://www.artofsolving.com/opensource/jodconverter
下载了之后直接解压,解压到/opt目录下/opt/jodconverter-2.2.2/,使用到的文件是安装包内的lib/jodconverter-cli-2.2.2.jar。
测试是否可以使用

  1. 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,命令如下:

  1. 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

  1. wget http://www.swftools.org/swftools-0.9.1.tar.gz
  2. tar xzf swftools-0.9.1.tar.gz
  3. cd swftools-0.9.1
  4. ./configure
  5. make
  6. make install

测试是否可以使用

pdf2swf -o /home/php/1.swf -z -t -f /home/php/1.pdf -s flashversion=9

第三步:用FlexPaper实现在线预览,里面有详细的demo。

第四步:使用php测试文档转换命令:
文档转pdf

  1. <?php
  2. $doc = ‘./docs/test.txt‘;
  3. $formatName = ‘./pdf/test.pdf‘;
  4. $command = ‘java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar ‘.$doc.‘ ‘.$formatName;
  5.  
  6. exec($command);
  7. echo ‘ok‘;

pdf转swf

  1. <?php
  2. $pdf = ‘./pdf/test.pdf‘;
  3. $swf = ‘./swf/test.swf‘;
  4.  
  5. $command = ‘/usr/local/wenku/swftools-0.9.1/src/pdf2swf -o ‘.$swf.‘ -T -z -t -f ‘.$pdf.‘ -s flashversion=9‘;
  6.  
  7. exec($command);
  8. 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,稍微改动下句可以实现了。

代码如下:

  1. <script src="js/flexpaper_flash.js" type="text/javascript"></script>
  2. <a id="viewerPlaceHolder" style="width:680px;height:480px;display:block;"/></a>
  3. <script type="text/javascript">
  4. var fp = new FlexPaperViewer(
  5. ‘FlexPaperViewer‘,
  6. ‘viewerPlaceHolder‘, { config : {
  7. SwfFile : escape(‘c.swf‘),
  8. Scale : 0.1,
  9. ZoomTransition : ‘easeOut‘,
  10. ZoomTime : 0.5,
  11. ZoomInterval : 0.2,
  12. FitPageOnLoad : true,
  13. FitWidthOnLoad : false,
  14. FullScreenAsMaxWindow : false,
  15. ProgressiveLoading : false,
  16. MinZoomSize : 0.2,
  17. MaxZoomSize : 5,
  18. SearchMatchAll : false,
  19. InitViewMode : ‘Portrait‘,
  20. PrintPaperAsBitmap : false,
  21.  
  22. ViewModeToolsVisible : true,
  23. ZoomToolsVisible : true,
  24. NavToolsVisible : true,
  25. CursorToolsVisible : true,
  26. SearchToolsVisible : true,
  27.  
  28. localeChain: ‘en_US‘
  29. }})
  30. </script>

到此就结束了,查看效果如图实现: