PHP, 原创PHP, PHPOffice, PhpPresentation
PHPOffice\PHPPresentation文本段落兼容WPS
- by chenxue4076
- 5 years ago
因公司业务,使用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文件
(781)