PHP windoews调用OpenOffice实现word/ppt转PDF
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP windoews调用OpenOffice实现word/ppt转PDF,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2706字,纯文字阅读大概需要4分钟。
内容图文
![PHP windoews调用OpenOffice实现word/ppt转PDF](/upload/InfoBanner/zyjiaocheng/641/d4fb19fa88c640939d5a3cefce5bc636.jpg)
1、安装免费的openOffice软件
2、需要JDK支持
3、安装完openOffice后,在开始--运行中输入Dcomcnfg打开组件服务。在组件服务—计算机—我的电脑—DCOMP配置中
4、 先到安装目录下,例如:C:\Program Files\OpenOffice 4\program\
cmd -> soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
5、需要在php.ini里把com.allow_dcom = true打开,即去掉前面的分号。如果是以后版本,需要在php.ini 里增加一行扩展extension=php_com_dotnet.dll,然后检查php的ext目录中是否存在该dll文件,如果没有请自行下载对应版本的dll。然后重启apache或IIS服务器。
class Office4Pdf { private $osm; public function __construct() { $this->osm = new \COM("com.sun.star.ServiceManager")or die ("Please be sure that OpenOffice.org is installed.n"); } public function MakePropertyValue($name,$value) { $oStruct = $this->osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue"); $oStruct->Name = $name; $oStruct->Value = $value; return $oStruct; } public function transform($input_url, $output_url) { $args = array($this->MakePropertyValue("Hidden",true)); $oDesktop = $this->osm->createInstance("com.sun.star.frame.Desktop"); //var_dump($input_url);die(); $oWriterDoc = $oDesktop->loadComponentFromURL($input_url,"_blank", 0, $args); $export_args = array($this->MakePropertyValue("FilterName","writer_pdf_Export")); //var_dump($output_url,$export_args);die(); $oWriterDoc->storeToURL($output_url,$export_args); $oWriterDoc->close(true); return $this->getPdfPages($output_url); } public function runs($input,$output) { $input = "file:///" . str_replace("\\","/",$input); $output = "file:///" . str_replace("\\","/",$output); return $this->transform($input, $output); } /** * 获取PDF文件页数的函数获取 * 文件应当对当前用户可读(linux下) * @param [string] $path [文件路径] * @return int */ public function getPdfPages($path) { if(!file_exists($path)) return 0; if(!is_readable($path)) return 0; // 打开文件 $fp=@fopen($path,"r"); if (!$fp) { return 0; } else { $max=0; while(!feof($fp)) { $line = fgets($fp,255); if (preg_match('/\/Count [0-9]+/', $line, $matches)) { preg_match('/[0-9]+/',$matches[0], $matches2); if ($max<$matches2[0]) $max=$matches2[0]; } } fclose($fp); // 返回页数 return $max; } } }
调用
static $file = 'C:/phpStudy/'; public function actionPreview() { $html = '暂不支持预览'; //名字 $new_name = 'test'; //拼装名字 $source = self::$file.'BOOTEX.txt'; $pdf_url =self::$file.$new_name.".pdf"; $last_url = self::$file.$new_name.".pdf"; $source = iconv("UTF-8", "gbk",$source); $pdf_url = iconv("UTF-8", "gbk",$pdf_url); require dirname(dirname(__DIR__)).'/vendor/SDK/OpenOffice/Office4Pdf.php'; $office2pdf = new \Office4Pdf(); $result = $office2pdf->runs($source,$pdf_url); if($result > 0){ $res = [ 'type' =>$new_name, 'url' =>$last_url, ]; var_dump($res);die; }else{ print_r($html);die; } die; }
内容总结
以上是互联网集市为您收集整理的PHP windoews调用OpenOffice实现word/ppt转PDF全部内容,希望文章能够帮你解决PHP windoews调用OpenOffice实现word/ppt转PDF所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。