使用OpenTBS删除PPTX幻灯片后文件属性幻灯片数量未更新
OpenTBS删除PPTX幻灯片后属性计数异常修复
原因说明
你调用$pptx->PlugIn(OPENTBS_DELETE_SLIDES, $slidesDeleteArr)删除幻灯片时,OpenTBS只会移除对应的幻灯片实体文件,不会同步更新PPTX压缩包内docProps/app.xml文件里的幻灯片总数字段,所以文件属性里显示的还是原始的42张,属于展示类问题,不影响实际幻灯片的使用。
解决方法
在删除幻灯片操作完成后、导出保存文件前,手动修改对应计数字段即可,示例代码如下:
// 原有删除幻灯片代码 $pptx->PlugIn(OPENTBS_DELETE_SLIDES, $slidesDeleteArr); // 新增逻辑:更新文件属性中的幻灯片计数 $pptx->LoadXml('docProps/app.xml'); // 此处数值替换为实际保留的幻灯片数量即可,你当前保留1张所以填1 $pptx->Data['docProps/app.xml'] = preg_replace('#<Slides>\d+</Slides>#', '<Slides>1</Slides>', $pptx->Data['docProps/app.xml']); // 之后正常执行文件导出/保存操作即可
如果保留的幻灯片数量是动态的,可以用原始总幻灯片数减去$slidesDeleteArr的长度,得到实际保留数后替换代码中的固定值1即可适配所有场景。
内容的提问来源于stack exchange,提问作者Navdeep Singh
相关产品推荐
相关产品推荐

