PHP, 原创, ,

PHPOffice\PHPPresentation文本段落兼容WPS

因公司业务,使用PHPPresentation制作PPT,用WIndows Office 高版本打开文字位置正常,使用某些版本或者WPS打开后,发现文字都叠在一起,文本框错位。

以下修改可以兼容WPS和 WIndows Office 各个版本

首先找到生成PowerPoint 2007的文件 PHPOffice/PHPPresentation/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php

找到代码

$objWriter->startElement('a:spcPct');
$objWriter->writeAttribute('val', $paragraph->getLineSpacing() . "%");

将其修改为

$objWriter->startElement('a:spcPct');
//$objWriter->writeAttribute('val', $paragraph->getLineSpacing() . "%");
$objWriter->writeAttribute('val', $paragraph->getLineSpacing() * 1000);

这样生成的PPTX文件就兼容了WPS,和低版本的Office。

//获取行间距
$paragraph->getLineSpacing() 

设置行间距
$pg = $oShape->createParagraph();
$pg->setLineSpacing($lineSpacing);

设置行间距的值 为 100 就是表示 单倍行距, 150就是1.5倍行距,多倍行距可以设置任意大小的值。 最后生成的PPT文件中的行距 100%和 100000其实是一样大的,只是100%不兼容WPS。

其他PHPPresentation问题 :1.PHPOffice\PHPPresentation 使用Placeholder添加sldNum页码设置字体和页码位置BUG修复以及无法显示页码问题 2.PHPOffice\PHPPresentation添加背景格式(图案填充)功能 3.使用PHPOffice/PHPPresentation生成超大PPT文件

(697)

Related Post