PHPWord中firstLine首行缩进不生效问题求助
PHPWord中firstLine首行缩进不生效问题求助
嗨,我之前维护老项目用PHPWord 1.4的时候,也碰到过一模一样的坑!折腾了好一阵才摸清楚门道,给你分享两个亲测可行的解决思路:
一、直接用你已验证有效的firstLineChars替代
既然你说firstLineChars能正常工作,那如果是做中文文档的首行缩进(通常是2个字符),用这个参数反而更直观,还不用纠结缇值换算:
$paragraphStyle = array( 'indentation' => ['firstLineChars' => 2] // 首行缩进2个字符宽度 );
我当时用这个方案完全没毛病,效果和预期的首行缩进一致,还贴合中文排版的习惯。
二、如果一定要用firstLine,试试兼容老版本的写法
PHPWord 1.4作为早期版本,确实存在一些参数兼容问题。你可以先试试把firstLine的数值调大测试,比如设为720(对应36磅,大概2个中文字符的宽度):
$paragraphStyle = array( 'indentation' => ['firstLine' => 720] );
另外还有个可能:早期版本里首行缩进需要配合基础左缩进一起设置,你可以试试这种组合写法:
$paragraphStyle = array( 'indentation' => [ 'left' => 0, 'firstLine' => 720 ] );
不过这个方案我当时测试下来效果不稳定,还是firstLineChars的方案最省心。
最后提个小建议
如果项目允许的话,尽量升级到PHPWord 2.x版本吧,新版本对段落样式的支持完善很多,这类小bug也少了不少。要是老项目没法升级,那firstLineChars绝对是最稳妥的选择!




