飘飘悠悠 发表于 2015-1-16 22:15:04

PHP网页编程之Linux 下 php 转DOC转PDF转SWF完成百度...

实现固定数量的几张图片的上传;再如调试软件ZendStudio的使用,看了很多次老师的应用,但总感觉用的不顺手,不懂那么多的数据值,到底哪一个才是真正的问题所在;还有如数据库语句的封装,我只会用简单的函数来进行封装。客岁开辟了一个OA体系,必要完成文档一键上传并完成在线预览,相似百度文库的功效。

体系情况:CentOs5.5
用到的工具:Openoffice3,Pdf2Swftool,Jodconverter,FlexPaper

网上找了些材料,早有人已完成了如许的功效,只不外是用JAVA来写的东东,PHP的没找着。
分离网上的材料依据完成操纵履历。
记录并总结一下:

全体思绪以下:
完成步骤:1.DOC上传2.DOC转成PDF3.PDF转成SWF4.显现
基于对Linux情况引进openofficesdk+pdf2swftool,分两个步骤,先使用openofficesdk把文档一致转成pdf,然后使用pdf2swftool把pdf转成swf

完成历程
要完成DOC转成PDF,在LINUX上面有Openoffice能够完成。
那末起首必要的是安装Openoffice这个东东。
1.安装openoffice3,这个安装历程很纠结,碰到过各类成绩,由于前后在几台服务器上安装过,最顺遂的安装办法以下,假如碰到成绩请看后面的文章有讲openoffice的安装。

tarzxvfOOo_3.3.0_Linux_x86-64_install-rpm-wJRE_zh-CN.tar.gz
cdRPEM
rpm-ivh*.rpm--nodeps–force
安装后的默许目次是在:/opt/目次上面
启动服务:
/opt/openoffice.org3/program/soffice-headless-accept="socket,host=127.0.0.1,port=8100;urp;"-nofirststartwizard&
在CentOs上面会短少黑体和宋体的,间接找到Windows上面的字体目次把黑体和宋体复制出来到目次

/opt/openoffice.org/basis3.3/share/fonts/truetype/
必要重启后才会失效
2.安装OpenOfficeSDK3.3

tarzxvfOOo-SDK_3.3.0_Linux_x86-64_install-rpm_en-US.tar.gz
cdOOO330_m20_native_packed-1_en-US.9567/RPMS/
rpm-vih*.rpm
3.安装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/tmp/1.doc/tmp/1.pdf
4.安装swftools
中文撑持安装:

mkdir–p/usr/share/xpdf
cd/usr/share/xpdf/
下载中文撑持及字体库
wgetftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz
wgethttp://www.nginxs.com/download/font.zip
tarzxvfxpdf-chinese-simplified.tar.gz
unzipfont.zip
mvGbsn00lp.ttfgkai00mp.ttfxpdf-chinese-simplified/CMap/cd/usr/share/xpdf/xpdf-chinese-simplified
编纂,到场新增的字体

vimadd-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/CMaptoUnicodeDir/usr/share/xpdf/chinese-simplified/CMap
displayCIDFontTTAdobe-GB1/usr/share/xpdf/chinese-simplified/CMap/gkai00mp.ttf
保留前进出
SwfTool安装:
cd/usr/local/wenku
wgethttp://www.swftools.org/swftools-0.9.1.tar.gz
tarzxvfswftools-0.9.1.tar.gz
cdswftools-0.9.1
./configure6)make
makeinstall
测试一下是不是可用
pdf2swf-o/usr/output.swf-T-z-t-f/usr/test1.pdf-slanguagedir=/usr/local/share/xpdf/chinese-simplified-sflashversion=9
假如测试乐成,那末就已OK一泰半了,就是显现的成绩了。

5.用FlexPaper完成在线预览
这个是网高低载吧,看着demo改下JS就好了,内里是用的JS读取SWF的路径,这个复杂吧,不讲了。


PHP来挪用LINUX命令完成转换,大概会碰到一个成绩说PHP没有实行权限,注重把PHP的用户改成权限也就是nobody这个用户的权限。


上面是我本人写的代码,PHP初学不久,不敷精简,仅供参考
Yii框架中文件转换功效,DOC转SWF

<?php
/**
文件转换
oscar2011-11-25jincan.liu@gmail.com
*/
classconverterextendsCWidget{

publicfunctionrun($file)
{

$filesArr=array(pdf,doc,docx,xls,xlsx,ppt,pptx,txt);
//文件上传并转换
if($_FILES["file"]&&$_FILES["file"]["error"]<=0){

$fileName=iconv(UTF-8,gb2312,$_FILES["file"]["name"]);
$types=explode(.,$fileName);
$typesIf=$types;
//更名为工夫戳
$types=time();
$fileName=$types...$types;
$filetype=$typesIf;

//限定上载范例
if(!in_array($typesIf,$filesArr)){
echo<scripttype="text/javascript">alert("uploadfiletypesin:pdf,doc,docx,xsl,xlsx,ppt,pptx,txt");location.href=location.href;</script>;
}
/*
functioncheck_is_chinese($s){
returnpreg_match(/./,$s);
}
//检测中文文件名
if(check_is_chinese($fileName)){
$types=time();
$fileName=$types...$types;
}
*/

//变动路径
if($typesIf==pdf){
$path=converter/files/pdf/;
}else{
$path=converter/files/doc/;
}

if(file_exists($path.$fileName)){
echo<scripttype="text/javascript">alert("文件已存在了");location.href=location.href;</script>;
}else{
move_uploaded_file($_FILES["file"]["tmp_name"],$path.$fileName);
//varpath
$docpath=/data/oa/frontend/www/converter/files/doc/;
$pdfpath=/data/oa/frontend/www/converter/files/pdf/;
$swfpath=/data/oa/frontend/www/converter/files/swf/;

if(file_exists($path.$fileName)){
//实行转换
if($typesIf==pdf){//PDF转SWF
$pdf=$fileName;
$swf=str_replace(pdf,swf,$pdf);
exec(/usr/local/wenku/swftools/bin/pdf2swf-o.$swfpath.$swf.-T-z-t-f.$pdfpath.$pdf.-slanguagedir=/usr/share/xpdf/xpdf-chinese-simplified-sflashversion=9);
$path2=$pdfpath.$pdf;
$path3=$swfpath.$swf;
}else{//DOC转PDF
$doc=$fileName;
$format=explode(.,$fileName);
$formatName=$format..pdf;
$command=java-jar/usr/local/wenku/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar.$docpath.$doc..$pdfpath.$formatName;
exec($command);
$path1=$docpath.$doc;
$path2=$pdfpath.$formatName;

if(file_exists($pdfpath.$formatName)){
$pdf=$formatName;
$swf=str_replace(pdf,swf,$pdf);
$swfcommand=/usr/local/wenku/swftools/bin/pdf2swf-o.$swfpath.$swf.-T-z-t-f.$pdfpath.$pdf.-slanguagedir=/usr/share/xpdf/xpdf-chinese-simplified-sflashversion=9;
exec($swfcommand);
$path3=$swfpath.$swf;
}
}
}
}

//print_r($_FILES["file"]);
$filetype=isset($filetype)?$filetype:;
$path1=isset($path1)?str_replace(/data/oa/frontend/www,,$path1):;
$path2=isset($path2)?str_replace(/data/oa/frontend/www,,$path2):;
$path3=isset($path3)?str_replace(/data/oa/frontend/www,,$path3):;
$reArr=array(filetype=>$filetype,path1=>$path1,path2=>$path2,path3=>$path3);
return$reArr;
}


//php100.comphp100中文网

}

//删除文件
publicfunctionDelFile($path,$pdfpath,$swfpath){
$pathcommand=rm-rf/data/oa/frontend/www.$path;
exec($pathcommand);
$pdfpathcommand=rm-rf/data/oa/frontend/www.$pdfpath;
exec($pdfpathcommand);
$swfpathcommand=rm-rf/data/oa/frontend/www.$swfpath;
exec($swfpathcommand);
}

}
理解动态语言的概念,运做机制,熟悉PHP语法

活着的死人 发表于 2015-1-17 20:34:18

小鸟是第一次发帖(我习惯潜水的(*^__^*)嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

若天明 发表于 2015-1-21 07:59:13

首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。

谁可相欹 发表于 2015-1-30 12:34:01

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

因胸联盟 发表于 2015-2-6 11:46:38

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

灵魂腐蚀 发表于 2015-2-16 02:07:01

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

第二个灵魂 发表于 2015-3-4 22:55:22

本文当是我的笔记啦,遇到的问题随时填充

再现理想 发表于 2015-3-11 21:16:40

真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,

柔情似水 发表于 2015-3-19 13:40:48

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

小魔女 发表于 2015-3-28 07:40:01

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
页: [1]
查看完整版本: PHP网页编程之Linux 下 php 转DOC转PDF转SWF完成百度...