windows10服务器使用 php com组件获取word文档页数
1 执行php代码,当然报错,我还没有开启php com配置,与安装office软件
$word = new \com("word.application", null, CP_UTF8) or die("请安装word"); $file = 'E:\WWW\51c\66.docx'; $word->Visible = 0; $word->Documents->Open($file,true,false); $docRange = $word->ActiveDocument->Content; echo $docRange->Information(4);//wdNumberOfPagesInDocument 页数 $word->Quit(); $word = null;
2 打开php.ini ( 我用的是php7.2)
extension=php_com_dotnet.dll //把前面的分号去掉 com.allow_dcom = true //改为true disable_classes = com 把 com 删除,这行代码变为: disable_classes =
3 安装office
我安装的是 MicrosoftOffice64_V2013 (最初装的是2010版本,发现找不到 Microsoft Word 97 - 2003 文档 组件)
安装成功后可以在电脑看到
4 设置组件权限
win+r : 输入 dcomcnfg 打开组件服务,然后双击 组件服务 ==> 双击 计算机 ==> 双击 我的电脑 ==> 打开 DCOM配置
找到 Microsoft Word 97 - 2003 文档 然后右键点击属性。
常规-》身分验证级别-》无
标识-》下列用户 然后填写你的服务器管理员帐号密码
5 添加组件服务
win+r : 输入 mmc -32 ,工具栏中选择 文件 -》 添加删除管理单元 ,然后单机 组件服务-》添加,点击确定
至此,在运行我的php代码,就不会报错了,也获取到 word页码
另外
获取ppt、excel 页码也是一样的操作
获取ppt 页码
$power = new \com("Powerpoint.Application"); $power->visible = true; $power->Presentations->Open(realpath($fileUrl)); $pageCount = $power->ActivePresentation->Slides->Count; $power->ActivePresentation->Close(); $power->Quit(); return $pageCount;
获取pdf页码我用的是 imagick
if (!extension_loaded('imagick')) { //判断是否安装成功 echo '/判断是否安装成功'; } $im = new Imagick(); $fileUrl = './15.pdf'; if(!file_exists($fileUrl)) { echo '没有找到pdf' ; return false; } $im->setResourceLimit($im::RESOURCETYPE_MEMORY, 1); $im->setResourceLimit($im::RESOURCETYPE_MAP, 1); $im->setResourceLimit($im::RESOURCETYPE_AREA, 1); $im->setResourceLimit($im::RESOURCETYPE_FILE, 1); $im->setResourceLimit($im::RESOURCETYPE_DISK, -1); $im ->pingImage($fileUrl); echo $im ->getNumberImages();
exel没搞