Heim 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);
}

}



Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Schritte zum Festlegen der PATH-Umgebungsvariablen des Linux-Systems Schritte zum Festlegen der PATH-Umgebungsvariablen des Linux-Systems Feb 18, 2024 pm 05:40 PM

So legen Sie die Umgebungsvariable PATH in Linux-Systemen fest. In Linux-Systemen wird die Umgebungsvariable PATH verwendet, um den Pfad anzugeben, in dem das System in der Befehlszeile nach ausführbaren Dateien sucht. Durch die korrekte Einstellung der Umgebungsvariablen PATH können wir Systembefehle und benutzerdefinierte Befehle an jedem Ort ausführen. In diesem Artikel wird erläutert, wie die Umgebungsvariable PATH in einem Linux-System festgelegt wird, und es werden detaillierte Codebeispiele bereitgestellt. Zeigen Sie die aktuelle PATH-Umgebungsvariable an. Führen Sie den folgenden Befehl im Terminal aus, um die aktuelle PATH-Umgebungsvariable anzuzeigen: echo$P

So legen Sie die Pfadumgebungsvariable fest So legen Sie die Pfadumgebungsvariable fest Sep 04, 2023 am 11:53 AM

Methode zum Festlegen der Pfadumgebungsvariablen: 1. Windows-System, öffnen Sie „Systemeigenschaften“, klicken Sie auf die Option „Eigenschaften“, klicken Sie auf „Erweiterte Systemeinstellungen“, wählen Sie im Fenster „Systemeigenschaften“ die Registerkarte „Erweitert“ und dann Klicken Sie auf die Schaltfläche „Umgebungsvariablen“, suchen Sie nach „Pfad“ und klicken Sie darauf, um ihn zu bearbeiten und zu speichern. 2. Öffnen Sie bei Linux-Systemen das Terminal, öffnen Sie Ihre Bash-Konfigurationsdatei und fügen Sie am Ende „export PATH=$PATH: Dateipfad“ hinzu die Datei und speichern Sie sie; 3. Für MacOS-Systeme ist der Vorgang derselbe wie oben.

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

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

So legen Sie die Umgebungsvariable PATH unter Linux richtig fest So legen Sie die Umgebungsvariable PATH unter Linux richtig fest Feb 22, 2024 pm 08:57 PM

So legen Sie die Umgebungsvariable PATH unter Linux richtig fest. Im Linux-Betriebssystem sind Umgebungsvariablen einer der wichtigen Mechanismen zum Speichern von Konfigurationsinformationen auf Systemebene. Unter anderem wird die Umgebungsvariable PATH verwendet, um die Verzeichnisse anzugeben, in denen das System nach ausführbaren Dateien sucht. Die korrekte Einstellung der Umgebungsvariablen PATH ist ein wichtiger Schritt, um den normalen Betrieb des Systems sicherzustellen. In diesem Artikel wird erläutert, wie Sie die Umgebungsvariable PATH unter Linux richtig festlegen, und es werden spezifische Codebeispiele bereitgestellt. 1. Überprüfen Sie die aktuelle Umgebungsvariable PATH und geben Sie den folgenden Befehl in das Terminal ein

So konfigurieren Sie die Pfadumgebungsvariable in Java So konfigurieren Sie die Pfadumgebungsvariable in Java Nov 15, 2023 pm 01:20 PM

Konfigurationsschritte: 1. Suchen Sie das Java-Installationsverzeichnis; 2. Suchen Sie die Einstellungen der Systemumgebungsvariablen. 3. Suchen Sie im Fenster der Umgebungsvariablen die Variable mit dem Namen „Pfad“ und klicken Sie auf die Schaltfläche „Bearbeiten“; Klicken Sie im Variablenfenster auf die Schaltfläche „Neu“ und geben Sie im Popup-Dialogfeld den Java-Installationspfad ein. 5. Nachdem Sie bestätigt haben, dass die Eingabe korrekt ist, klicken Sie auf die Schaltfläche „OK“.

Die Rolle und Bedeutung der PATH-Umgebungsvariablen in Linux Die Rolle und Bedeutung der PATH-Umgebungsvariablen in Linux Feb 21, 2024 pm 02:09 PM

„Die Rolle und Bedeutung der PATH-Umgebungsvariablen in Linux“ Die PATH-Umgebungsvariable ist eine der sehr wichtigen Umgebungsvariablen im Linux-System. Sie definiert die Verzeichnisse, in denen das System nach ausführbaren Programmen sucht. Wenn der Benutzer im Linux-System einen Befehl in das Terminal eingibt, durchsucht das System nacheinander die in der Umgebungsvariablen PATH aufgeführten Verzeichnisse, um festzustellen, ob die ausführbare Datei des Befehls vorhanden ist. Andernfalls wird „commandnotfound“ angezeigt. Die Rolle der PATH-Umgebungsvariablen: Vereinfacht

So konfigurieren Sie den Pfad in Java-Umgebungsvariablen So konfigurieren Sie den Pfad in Java-Umgebungsvariablen Apr 22, 2023 pm 06:49 PM

1. Suchen Sie das Verzeichnis „bin“ im JDK-Installationsverzeichnis. 2. Klicken Sie auf „Computer“. 3. Wählen Sie „Erweitert“ und „Umgebungsvariablen“. Das Ende. Administrator-Benutzervariablen werden nur vom Administrator-Benutzer verwendet, Systemvariablen können von allen Benutzern verwendet werden. Unter den Umgebungsvariablen wird der Pfad verwendet, um sicherzustellen, dass Java-Befehle unter dem Pfad ausgeführt werden. Er kann als unverzichtbarer Link bei der Konfiguration von Umgebungsvariablen bezeichnet werden.

Wie verwende ich Dateitrennzeichen und Pfadtrennzeichen in Java? Wie verwende ich Dateitrennzeichen und Pfadtrennzeichen in Java? Apr 21, 2023 pm 02:40 PM

1. Dateitrennzeichen Dateitrennzeichen sind Zeichen, die zum Trennen von Verzeichnisnamen verwendet werden, die einen Pfad zu einem bestimmten Speicherort darstellen. 1. Dateitrennzeichen abrufen In Java gibt es mehrere Möglichkeiten, das Dateitrennzeichen abzurufen. Wir können File.separator verwenden, um das Trennzeichen von String zu erhalten. StringfileSeparator=File.separator; Wir können auch File.separatorChar verwenden, um das Zeichen dieses Trennzeichens zu erhalten. charfileSeparatorChar=File.separatorChar; Ab Java7 können wir auch das Dateisystem verwenden. StringfileSeparator=F

See all articles