phpWord TemplateProcessor中图片对齐设置不生效如何解决
问题原因
当你将图片的positioning参数设置为绝对定位\PhpOffice\PhpWord\Style\Image::POSITION_ABSOLUTE时,alignment配置不会生效,绝对定位模式下的图片位置由偏移量参数控制,和对齐属性无关。
解决方案
方案1:不需要绝对定位时,优先使用行内对齐配置
删掉positioning参数,仅保留alignment即可生效:
$templateProcessor->setImageValue($tag->template_tag, array( 'path' => $filePath, // 居中用 \PhpOffice\PhpWord\SimpleType\Jc::CENTER // 右对齐用 \PhpOffice\PhpWord\SimpleType\Jc::END 'alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER, ) );
如果上述配置仍不生效,可以提前在docx模板里给图片占位符所在的段落设置好对应对齐方式,模板的段落对齐优先级更高。
方案2:必须使用绝对定位时,用偏移量控制位置
删掉alignment参数,通过offsetX调整水平位置实现对齐效果,可使用phpWord自带的单位转换工具计算偏移值:
$templateProcessor->setImageValue($tag->template_tag, array( 'path' => $filePath, 'positioning' => \PhpOffice\PhpWord\Style\Image::POSITION_ABSOLUTE, // 水平偏移量:示例为15厘米,可根据页面宽度、页边距、图片宽度自行计算目标值 'offsetX' => \PhpOffice\PhpWord\Shared\Converter::cmToPoint(15), // 垂直偏移量按需设置 'offsetY' => \PhpOffice\PhpWord\Shared\Converter::cmToPoint(3), ) );
补充说明
如果使用的是0.18以下版本的phpWord,setImageValue方法的alignment参数存在兼容问题,建议升级到稳定版后再测试。
内容的提问来源于stack exchange,提问作者Suman
相关产品推荐
相关产品推荐

