WINDOWS服务器下PHP利用COM组件将PPT生成图片
yuyutoo 2024-11-11 16:47 4 浏览 0 评论
本文仅适用于WINDOWS服务器,且必须有安装Microsoft PowerPoint;
首先配置php.ini,启用组件:
extension = php_com_dotnet.dll
com.allow_dcom = true
运行comexp.msc -32
打开组件服务,注意这里使用comexp.msc -32是因为我们将要配置的组件是32位的,运行dcomcnfg.exe无法看到组件。
一般在【组件服务】-【计算机】-【我的电脑】-【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 + 站点相关账号,如图:
总体来看,采用COM组件的方式代码简单,因为是调用Microsoft PowerPoint直接转换,生成图片质量较好(不丢失元素),缺点是你得忍受WINDOWS服务器~
相关推荐
- 走进Maven世界
-
Maven作为一个构建工具,不仅能帮我们自动化构建,还能够抽象构建过程,提供构建任务的具体实现,自动测试、打包、生成文档和报表;它跨平台,同时提供了中央仓库,只需要在pom.xml中配置下所需的jar...
- Maven配置中profile在POM和settings区别
-
Maven配置中profile在POM和settings区别上一节文章...
- Maven的下载与配置
-
1.Maven官网地址首页:https://maven.apache.org/...
- Maven入门,读完这篇就够了
-
前言夜空中最亮的星,2021请照亮我前行~Maven是我们日常开发都会用到的,五一过后,我把看过的Maven基础概念做了整理,作为入门和查阅使用。正文Maven概念...
- maven发包踩坑
-
出现...
- MAVEN详解
-
Maven概述看完本篇文章后相信你对Maven的理解能更进一步常规项目开发存在的问题通常Web项目开发只会创建一个工程,然后所有的jar包都会存放到WEB-INF/lib目录下,如...
- 深圳尚学堂:Maven的安装及配置
-
Maven是一个项目管理的Java工具,在JavaEE中,我们可以使用Maven方便地管理团队合作的项目,现在我们在学习JavaEE框架,使用Maven可以管理类库,有效方便地供团队中的其他人员使用...
- 学Maven,这篇万余字的教程,真的够用了
-
1Maven介绍1.1为什么使用Maven由于Java的生态非常丰富,无论你想实现什么功能,都能找到对应的工具类,这些工具类都是以jar包的形式出现的,例如Spring,Spring...
- java工具篇-Maven安装配置及优化
-
开发springboot和springcloud项目,maven是必不可少的插件。关于maven就不做过多介绍,简单理解,可以理解为一个jar包管理工具,当然,没有这么简单,想了解的可以搜下相关资...
- 快速上手maven
-
Maven的作用在开发过程中需要用到各种各样的jar包,查找和下载这些jar包是件费时费力的事,特别是英文官方网站,可以将Maven看成一个整合了所有开源jar包的合集,我们需要jar包只需要从Mav...
- 看大佬对Maven讲解有多深,Maven setting.xml文件 了解一下
-
通常我们安装了Maven之后会对Mavensetting.xml(Maven的配置文件做一些自定义),本章我们将详细地学习一下Mavensetting.xml文件。文件位置一般存在与Maven安装...
- 最全!最强大!Maven知识大全
-
一、什么是MavenMaven是Apache的一款开源的项目管理工具,是Apache基于ANT进行升级后,研发出了全新的自动化构建工具。Maven使用项目对象模型(POM-ProjectObject...
- 做开发这么久了,还不会搭建服务器Maven私有仓库?这也太Low了吧
-
大家好,我是冰河~~...
- Maven解析让你从新手到高手
-
背景本文从实战角度出发,笔者多年经验总结,能让你快速理解Maven,知其然且知其所以然,全是干货,让我们开始吧。文章概览...
- 后台服务工具maven:maven安装配置
-
1、maven下载下载地址:https://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.t...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)