php教程 php手册 Linux 下 php 转DOC转PDF转SWF实现百度的文库预览功能

Linux 下 php 转DOC转PDF转SWF实现百度的文库预览功能

Jun 21, 2016 am 08:49 AM
path quot

去年开发了一个OA系统,需要实现文档一键上传并实现在线预览,类似百度文库的功能。

系统环境:CentOs5.5
用到的工具:Openoffice 3 , Pdf2Swf tool , Jodconverter , FlexPaper

网上找了些资料,早有人已经实现了这样的功能,只不过是用JAVA来写的东东,PHP的没找着。
结合网上的资料根据实现操作经验。
纪录并总结一下:

整体思路如下:
实现步骤: 1. DOC上传   2. DOC转成PDF   3. PDF转成SWF  4. 显示
基于对Linux环境引入openoffice sdk + pdf2swf tool,分两个步骤,先利用openoffice sdk把文档统一转成pdf,然后利用pdf2swf tool把pdf转成swf

实现过程
要实现DOC转成PDF,在LINUX下面有Openoffice可以实现。
那么首先需要的是安装Openoffice这个东东。
1. 安装openoffice3,这个安装过程很纠结,遇到过各种问题,因为先后在几台服务器上安装过,最顺利的安装方法如下,如果遇到问题请看前面的文章有讲openoffice的安装。

tar zxvf OOo_3.3.0_Linux_x86-64_install-rpm-wJRE_zh-CN.tar.gz
cd RPEM
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. 安装OpenOffice SDK3.3

tar zxvf OOo-SDK_3.3.0_Linux_x86-64_install-rpm_en-US.tar.gz
cd OOO330_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/
下载中文支持及字体库
wget ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz
wget http://www.nginxs.com/download/font.zip
tar zxvf xpdf-chinese-simplified.tar.gz
unzip font.zip
mv Gbsn00lp.ttf gkai00mp.ttf xpdf-chinese-simplified/CMap/ cd /usr/share/xpdf/xpdf-chinese-simplified
编辑,加入新增的字体

vim add-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/CMap toUnicodeDir/usr/share/xpdf/chinese-simplified/CMap
displayCIDFontTT Adobe-GB1 /usr/share/xpdf/chinese-simplified/CMap/gkai00mp.ttf
保存后退出
SwfTool安装:
cd /usr/local/wenku
wget http://www.swftools.org/swftools-0.9.1.tar.gz
tar zxvf swftools-0.9.1.tar.gz
cd swftools-0.9.1
./configure 6)make
make install
测试一下是否可用
pdf2swf -o /usr/output.swf -T -z -t -f /usr/test1.pdf -s languagedir=/usr/local/share/xpdf/chinese-simplified -s flashversion=9
如果测试成功,那么就已经OK一大半了,就是显示的问题了。

5. 用FlexPaper实现在线预览
这个是网上下载吧,看着demo改下JS就行了,里面是用的JS读取SWF的路径,这个简单吧,不讲了。


PHP来调用LINUX命令实现转换,可能会遇到一个问题说PHP没有执行权限,注意把PHP的用户改成权限也就是nobody这个用户的权限。


下面是我自己写的代码,PHP初学不久,不够精简,仅供参考
Yii框架中文件转换功能,DOC转SWF

/**
文件转换
oscar 2011-11-25 jincan.liu@gmail.com
*/
class converter extends CWidget{

public function run($file)
{

$filesArr = array('pdf','doc','docx','xls','xlsx','ppt','pptx','txt');
//文件上传并转换
if($_FILES["file"] && $_FILES["file"]["error"]
$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 '';
}
/*
function check_is_chinese($s){
return preg_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 '';
}else{
move_uploaded_file($_FILES["file"]["tmp_name"], $path.$fileName);
//var path
$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.' -s languagedir=/usr/share/xpdf/xpdf-chinese-simplified -s flashversion=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.' -s languagedir=/usr/share/xpdf/xpdf-chinese-simplified -s flashversion=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.com php100中文网

}

//删除文件
public function DelFile($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);
}

}



본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 시스템의 PATH 환경 변수를 설정하는 단계 Linux 시스템의 PATH 환경 변수를 설정하는 단계 Feb 18, 2024 pm 05:40 PM

Linux 시스템에서 PATH 환경 변수를 설정하는 방법 Linux 시스템에서 PATH 환경 변수는 시스템이 명령줄에서 실행 파일을 검색하는 경로를 지정하는 데 사용됩니다. PATH 환경 변수를 올바르게 설정하면 어느 위치에서나 시스템 명령과 사용자 정의 명령을 실행할 수 있습니다. 이 기사에서는 Linux 시스템에서 PATH 환경 변수를 설정하는 방법을 소개하고 자세한 코드 예제를 제공합니다. 현재 PATH 환경 변수를 봅니다. 현재 PATH 환경 변수를 보려면 터미널에서 다음 명령을 실행합니다. echo$P

경로 환경 변수를 설정하는 방법 경로 환경 변수를 설정하는 방법 Sep 04, 2023 am 11:53 AM

경로 환경 변수를 설정하는 방법: 1. Windows 시스템에서 "시스템 속성"을 열고 "속성" 옵션을 클릭한 후 "고급 시스템 설정"을 클릭하고 "시스템 속성" 창에서 "고급" 탭을 선택한 다음 "환경 변수" " 버튼을 클릭하고 "경로"를 찾아 클릭하여 편집하고 저장합니다. 2. Linux 시스템의 경우 터미널을 열고 bash 구성 파일을 열고 끝에 "export PATH=$PATH: 파일 경로"를 추가합니다. 3. MacOS 시스템의 경우 작업은 위와 동일합니다.

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Linux에서 PATH 환경 변수를 올바르게 설정하는 방법 Linux에서 PATH 환경 변수를 올바르게 설정하는 방법 Feb 22, 2024 pm 08:57 PM

Linux에서 PATH 환경 변수를 올바르게 설정하는 방법 Linux 운영 체제에서 환경 변수는 시스템 수준 구성 정보를 저장하는 데 사용되는 중요한 메커니즘 중 하나입니다. 그 중 PATH 환경 변수는 시스템이 실행 파일을 검색하는 디렉터리를 지정하는 데 사용됩니다. PATH 환경 변수를 올바르게 설정하는 것은 시스템의 정상적인 작동을 보장하는 핵심 단계입니다. 이 기사에서는 Linux에서 PATH 환경 변수를 올바르게 설정하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 현재 PATH 환경변수를 확인하고 터미널에 다음 명령어를 입력합니다.

Java에서 경로 환경 변수를 구성하는 방법 Java에서 경로 환경 변수를 구성하는 방법 Nov 15, 2023 pm 01:20 PM

구성 단계: 1. Java 설치 디렉토리를 찾습니다. 2. 시스템 환경 변수 설정을 찾습니다. 3. 환경 변수 창에서 "Path"라는 변수를 찾고 편집 버튼을 클릭합니다. 변수 창에서 "새로 만들기" 버튼을 클릭하고 팝업 대화 상자에 Java 설치 경로를 입력합니다. 5. 입력이 올바른지 확인한 후 "확인" 버튼을 클릭합니다.

Linux에서 PATH 환경 변수의 역할과 중요성 Linux에서 PATH 환경 변수의 역할과 중요성 Feb 21, 2024 pm 02:09 PM

"Linux에서 PATH 환경 변수의 역할과 중요성" PATH 환경 변수는 Linux 시스템에서 매우 중요한 환경 변수 중 하나이며 시스템이 실행 가능한 프로그램을 찾는 디렉터리를 정의합니다. Linux 시스템에서는 사용자가 터미널에 명령을 입력하면 시스템이 PATH 환경 변수에 나열된 디렉터리를 하나씩 검색하여 해당 명령의 실행 파일이 있는지 확인하고 실행합니다. 그렇지 않으면 "commandnotfound" 메시지가 표시됩니다. PATH 환경 변수의 역할: 단순화

Java 환경 변수에서 경로를 구성하는 방법 Java 환경 변수에서 경로를 구성하는 방법 Apr 22, 2023 pm 06:49 PM

1. jdk 설치 디렉터리 아래의 bin 디렉터리를 찾아 복사합니다. 2. 컴퓨터를 클릭하고 속성을 선택합니다. 3. 고급, 환경 변수를 선택합니다. 4. 경로 줄에 영어 반자 기호(;)를 붙여넣습니다. 결국, 관리자 사용자 변수는 관리자만 사용 가능하며, 시스템 변수는 모든 사용자가 사용할 수 있습니다. 환경변수 중 path는 해당 경로 아래에서 java 명령이 실행되도록 하기 위해 사용되는 것으로, 환경변수 설정에 있어서 없어서는 안 될 링크라고 할 수 있다.

Java에서 파일 구분 기호와 경로 구분 기호를 사용하는 방법은 무엇입니까? Java에서 파일 구분 기호와 경로 구분 기호를 사용하는 방법은 무엇입니까? Apr 21, 2023 pm 02:40 PM

1. 파일 구분자 파일 구분자는 특정 위치에 대한 경로를 구성하는 디렉터리 이름을 구분하는 데 사용되는 문자입니다. 1. 파일 구분 기호 얻기 Java에서는 파일 구분 기호를 얻는 방법이 여러 가지가 있습니다. File.separator를 사용하여 문자열 구분 기호를 얻을 수 있습니다. StringfileSeparator=File.separator; File.separatorChar를 사용하여 이 구분 기호의 문자를 얻을 수도 있습니다. charfileSeparatorChar=File.separatorChar; Java7부터는 파일 시스템도 사용할 수 있습니다. StringfileSeparator=F

See all articles