php实现ppt转图片,php调用com组件问题
PHP 调用com组件将ppt转为图片。
需要在php.ini中开启
extension=php_com_dotnet.dll
com.allow_dcom = true
com.allow_dcom = true
测试代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?php $powerpnt = new COM( "powerpoint.application" ) or die ( "Unable to instantiate Powerpoint" ); $file = '1.ppt' ; echo realpath ( $file ); $addr = $_SERVER [ 'DOCUMENT_ROOT' ]. '/ppt/1.ppt' ; echo $addr ; $presentation = $powerpnt ->Presentations->Open( $addr , false, false, false) or die ( "Unable to open presentation" ); $presentation ->Fonts->Replace( '黑体' , '幼圆' ); $presentation ->Fonts->Replace( 'MS Gothic' , '幼圆' ); $presentation ->Fonts->Replace( '方正粗倩简体' , '幼圆' ); $presentation ->Fonts->Replace( '方正小标宋简体' , '幼圆' ); $presentation ->Fonts->Replace( 'Arial Black' , '幼圆' ); $presentation ->Fonts->Replace( '华文中宋' , '幼圆' ); $presentation ->Fonts->Replace( 'Arial Unicode MS' , '幼圆' ); $presentation ->Fonts->Replace( '方正细圆简体' , '幼圆' ); $presentation ->Fonts->Replace( 'Times New Roman' , '幼圆' ); foreach ( $presentation ->Fonts as $c ) { echo $c ->name. "<br />" ; //echo $c->Replace('',''); } foreach ( $presentation ->Slides as $slide ) { $slideName = "Slide_" . $slide ->SlideNumber; $uploadsFolder = 'iii' ; $exportFolder = realpath ( $uploadsFolder ); $slide ->Export( $exportFolder . "//" . $slideName . ".jpg" , "jpg" , "1920" , "1080" ); } $presentation ->Close(); $powerpnt ->Quit(); $powerpnt = null; ?> |
在win7上跑,没问题,放到2008上面出现错误,有一种exception叫unknown...
解决方案:
cmd -》 dcomcnfg
参考网址:
http://blog.csdn.net/bleurever/article/details/50783133
2018年2月26日续
按照上述方法解决后发现交互式用户有以下问题,必须要有用户登录系统才能使用,否则报错如下:
PHP Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `powerpoint.application': 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。
解决方法,指定用户,还不能是administrator用户,必须新建一个。
在安全,选项卡中,所有权限选自定义,给上面选择的用户授予全部权限。
搞定!
--------------------------------------------------------------------------------
交互式用户(The interactive user): 这是推荐的选项, 以当前登录到系统的用户确定对象的身份(当前必须有用户登录到系统, 如果用户注销那么对象也会被销毁);
启动用户(The launching user): 以调用的客户端的用户确定对象的身份, 一个缺点就是这个对象不能再进行远程调用;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术