您的位置:首页 > 编程语言 > PHP开发

PHP利用openoffice实现文档装换

2015-11-16 10:57 549 查看

openoffice

要实现文档转换为PDF,可利用jodconverter开源jar实现文档的转换。 而jodconverter的转换原理是利用openoffice实现转换。而jodconverter必须要有Java环境才可转换。故要实现word -> pdf -> swf

需要安装的软件有

openoffice

jodconverter jar包

swftools

jdk/jre

word转换PDF

/**
*
* @param unknown $wordpath  要转换为PDF的word文件路径,全路径 如F://duanxin.doc
* @param unknown $outPdfPath  转换成功后的PDF文件路径
* @param unknown $jodconverterPath 安装的jodconverter的jodconverter-cli-2.2.2.jar所在路径,我的为:D://jodconverter//jodconverter-2.2.2//lib//jodconverter-cli-2.2.2.jar
* @return boolean
*/
function word2pdf ($wordpath, $outPdfPath, $jodconverterPath) {
if (empty($wordpath)) return false;
try {
//这里是因为我吧Java(jdk/jre)加入了环境变量,故可直接写出下面这样,
//相当于cmd窗口下直接写 java -jar jodconverter-cli-2.2.2.jar所在路径 word文件 PDF文件
$p = "java -jar ". $jodconverterPath . ' ' . $wordpath . ' ' . $outPdfPath;
// 否则该前面应该加入jre/jdk的路径
exec($p);
return true;
} catch (Exception $e) {
return false;
}
}


在执行转换前, 必须先启动openoffice服务,可直接用cmd窗口进入openoffice的安装目录即

C:\User\Administrator>cd D:\openoffice\program
C:\User\Administrator>d:
D:\openoffice\program>soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard


PDF2SWF

/**
*
* @param pdf2swf swftools安装路径,如 D://SWFTools//pdf2swf.exe
* @param swfPath SWF文件
* @param pdfpath PDF文件
*/
function pdf2swf($pdf2swf, $swfPath, $pdfpath){
$c = $pdf2swf . ' -o ' . $swfPath . ' -T -z -t -f ' . $pdfpath . ' -s flashversion=9';
exec($c);
}


我的测试代码如下

<?php
$startOpenofficeExc = 'soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard';

$openoffice   = 'D://openoffice//program//';

$jodconverter = 'D://jodconverter//jodconverter-2.2.2//lib//jodconverter-cli-2.2.2.jar';

$testDoc      = 'F://duanxin.doc';

$testOut      = 'F://duanxin.pdf';

$javaPath     = 'C:\Program Files\Java\jdk1.7.0_79\bin\\';

$pdf2swf      = 'D://SWFTools//pdf2swf.exe';

//启动openoffice
//exec($openoffice . $startOpenofficeExc);
//pdf2swf -o /home/php/1.swf -T -z -t -f /home/php/1.pdf -s flashversion=9

/**
*
* @param unknown $wordpath
* @param unknown $outPdfPath
* @param unknown $jodconverterPath
* @return boolean
*/
function word2pdf ($wordpath, $outPdfPath, $jodconverterPath) {
if (empty($wordpath)) return false;
try {
$p = "java -jar ". $jodconverterPath . ' ' . $wordpath . ' ' . $outPdfPath;
exec($p);
return true;
} catch (Exception $e) {
return false;
}
}

if(word2pdf($testDoc, $testOut, $jodconverter)) {
header("location: show.php?swfName=duanxin.swf");
} else {
echo 'error';
}

function pdf2swf($pdf2swf, $swfPath, $pdfpath){
$c = $pdf2swf . ' -o ' . $swfPath . ' -T -z -t -f ' . $pdfpath . ' -s flashversion=9';
exec($c);
}
echo '--------------------------------------------------------------------------<br>';

$swfPath2 = 'F://duanxin.swf';
$pdfpath2 = 'F://duanxin.pdf';
pdf2swf($pdf2swf, $swfPath2, $pdfpath2);


显示SWF

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>查看</title>
<meta charset="utf-8">
<meta http-equiv="pragma" <
c05b
span class="hljs-attribute">content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="js/flexpaper_flash.js"></script>
<script language="JavaScript">
function Request(argname) {
var url = document.location.href;
var arrStr = url.substring(url.indexOf("?")+1).split("&");
//return arrStr;
for(var i =0;i<arrStr.length;i++) {
var loc = arrStr[i].indexOf(argname+"=");

if(loc!=-1) {
return arrStr[i].replace(argname+"=","").replace("?","");
break;
}

}
return "";
}
//使用Request("argname")即可得到参数值;
</script>

<style>
body { margin: 0px;}
</style>
</head>

<body >
<div style="position:absolute;left:10px;top:10px;">
<a id="viewerPlaceHolder" style="width:690px;height:790px;display:block"></a>
<script type="text/javascript">
var flexpaper = new FlexPaperViewer(
'FlexPaperViewer',//这里表明该FlexPaperViewer.swf是位于项目跟路径下
'viewerPlaceHolder', { config : {
//要显示的SWF文件所在路径, 这里为根目录下的upload文件夹下
SwfFile : encodeURI("upload/"+Request("swfName")),
ZoomInterval : 0.2,
MinZoomSize : 0.2,
MaxZoomSize : 1.4,

ZoomTime : 0.5,
Scale : 1,
ZoomTransition : 'easeOut',
FitPageOnLoad : true,
FitWidthOnLoad : true,
FullScreenAsMaxWindow : false,
ProgressiveLoading : true,
SearchMatchAll : true,
ViewModeToolsVisible : true,
ZoomToolsVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,

localeChain: 'zh_CN'
}});
</script>
</div>
</body>
</html>


flexpaper_flash.js, FlexPaperViewer.swf 下载地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息