php ppt生成图片不显示,WINDOWS服务器下PHP利用COM组件将PPT生成图片

WINDOWS服务器下PHP利用COM组件将PPT生成图片

本文仅适用于WINDOWS服务器,且必须有安装Microsoft PowerPoint;

首先配置php.ini,启用组件:extension = php_com_dotnet.dll

com.allow_dcom = true

运行comexp.msc -32

打开组件服务,注意这里使用comexp.msc -32是因为我们将要配置的组件是32位的,运行dcomcnfg.exe无法看到组件。

7687c9c8e60d4cfa1832d2c353cbf441.png

一般在【组件服务】-【计算机】-【我的电脑】-【DCOM配置】-【Microsoft PowerPoint 幻灯片】上点右键,属性窗口中切换到【标识】选项卡,设置“交互式用户”即可,一般本地设置这个程序就可以跑起来了。

PHP源代码:/**

* 将指定PPT生成图片

* @param  string  $pptfile PPT路径

* @param  boolean $iswater 是否增加水印

*/

function ppt2img($pptfile, $iswater = true){

if(!$pptfile){

return false;

}

//去除第一个'/'

$pptfile = substr($pptfile, 1);

//获得存储路径

$ext_arr = explode(".", $pptfile);

$ext_arr[0];

//没有则创建

if(!file_exists($ext_arr[0])){

@mkdir($ext_arr[0],0777,true);

}

set_time_limit(300);

$exportFolder = realpath($ext_arr[0]);

$powerpnt = new \COM("powerpoint.application") or die("Unable to instantiate Powerpoint");

$presentation = $powerpnt->Presentations->Open(realpath($pptfile), false, false, false) or die("Unable to open presentation");

$i = 1;

foreach($presentation->Slides as $slide){

$slideName = $slide->SlideNumber;

$slide->Export($exportFolder."//".$slideName.".jpg", "jpg");

//水印

if($iswater){

water($ext_arr[0].'/'.$i.'.jpg');

}

$i += 1;

}

$presentation->Close();

$powerpnt->Quit();

$powerpnt = null;

return $i;

}

提示:

如果组件服务中【我的电脑】如果出现红色向下箭头原因:msdtc 没有安装或者被卸载了!

解决方法:

msdtc -resetlog

msdtc -uninstall

重启电脑再执行:

msdtc -install

上到服务器上会提示 ERR: Failed to create COM object `powerpoint.application': 拒绝访问。

最头痛的就是这个安全权限了,网上的有关填哪个权限简直是五花八门什么都有,我的解决方式是添加3个账号:Everyone、NETWORK、SERVICE + 站点相关账号,如图:

fc22fbb68a7b336c024f5fd65644aa37.png

总体来看,采用COM组件的方式代码简单,因为是调用Microsoft PowerPoint直接转换,生成图片质量较好(不丢失元素),缺点是你得忍受WINDOWS服务器~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值