|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
实现固定数量的几张图片的上传;再如调试软件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[1];
//更名为工夫戳
$types[0]=time();
$fileName=$types[0]...$types[1];
$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(/[x80-xff]./,$s);
}
//检测中文文件名
if(check_is_chinese($fileName)){
$types[0]=time();
$fileName=$types[0]...$types[1];
}
*/
//变动路径
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[0]..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语法 |
|