核心的代码如下:
functionMakePropertyValue($name,$value,$osm){
$oStruct=$osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$oStruct->Name=$name;
$oStruct->Value=$value;
return$oStruct;
}
functionword2pdf($doc_url,$output_url){
$osm=newCOM("com.sun.star.ServiceManager")ordie("PleasebesurethatOpenOffice.orgisinstalled.n");
$args=array(MakePropertyValue("Hidden",true,$osm));
$oDesktop=$osm->createInstance("com.sun.star.frame.Desktop");
$oWriterDoc=$oDesktop->loadComponentFromURL($doc_url,"_blank",0,$args);
$export_args=array(MakePropertyValue("FilterName","writer_pdf_Export",$osm));
$oWriterDoc->storeToURL($output_url,$export_args);
$oWriterDoc->close(true);
}
$doc_file=dirname(__FILE__)."/11.doc";//源文件,DOC或者WPS都可以
$output_file=dirname(__FILE__)."/11.pdf";//欲转PDF的文件名
$doc_file="file:///".$doc_file;
$output_file="file:///".$output_file;
$document->word2pdf($doc_file,$output_file);
用上述发现代码一直在报错
(!)Fatalerror:Uncaughtexception'com_exception'withmessage'<b>Source:</b>[automationbridge]<br/><b>Description:</b>com.sun.star.task.ErrorCodeIOException:'inI:phpStudyWWWDocPreviewtest2.phponline27
(!)com_exception:<b>Source:</b>[automationbridge]<br/><b>Description:</b>com.sun.star.task.ErrorCodeIOException:inI:phpStudyWWWDocPreviewtest2.phponline27
最后发现原来是转出路径的问题:通过调试得出上述代码的转出路径$output_file是file:///I:phpStudyWWWDocPreviewsdds.pdf。
然而storeToURL这个方法里面需要的路径是这样的:file:///I:/phpStudy/WWW/DocPreview/sdds.pdf。
因此只需要将$output_file的""替换为“/”
$doc_file=dirname(__FILE__)."/11.doc";//源文件,DOC或者WPS都可以
$output_file=dirname(__FILE__)."/11.pdf";//欲转PDF的文件名
$output_file=str_replace("\","/",$output_file);
$doc_file="file:///".$doc_file;
$output_file="file:///".$output_file;
$document->word2pdf($doc_file,$output_file);
|