对齐在 phpWord TemplateProcessor 中不起作用

alignment is not working in phpWord TemplateProcessor

我正在尝试更改添加到 docx 文件中的图像的对齐方式,但对齐方式不起作用。我试过如下:

$templateProcessor->setImageValue($tag->template_tag, 
                       array(
                                                        
                          'path' => $filePath, 
                          'positioning' => \PhpOffice\PhpWord\Style\Image::POSITION_ABSOLUTE,
                          'alignment' => \PhpOffice\PhpWord\SimpleType\Jc::END,
                         )
                        );

虽然图像是在导出的 docx 文件中呈现的,但是图像对齐始终保持不变。如何将图像的对齐方式更改为居中或结束?

您正在使用 you create a Word document from scratch using the library 时保留的定位设置。

但是,您正在使用 PHPWord 模板处理能力:这意味着 布局由您的 Word 文档本身驱动.

因此,占位符本身必须在模板中居中才能被居中图像替换。

为了说明,请考虑以下代码(放置在 TemplateProcessor class 可用的任何 PHP 代码中):

$templateProcessor = new TemplateProcessor('Template.docx');
$templateProcessor->setValue('mc', 'Word MC');
$templateProcessor->setImageValue(
    'advisory', 
    [
        'path' => 'https://upload.wikimedia.org/wikipedia/commons/thumb/3/33/Parental_Advisory_label.svg/300px-Parental_Advisory_label.svg.png'
    ]
    );
$templateProcessor->saveAs('Replaced.docx');

使用以下 Word 模板(代码中的 Template.docx)... ...您得到了以下替换(代码中的Replaced.docx

如果您将图片占位符居中... ...替换图像居中!

TemplateProcessorclass方法setImageValue的第二个参数,名为$replace(在0.16 version中添加)可以是关联数组,但它只支持 3 个值(引用自方法的 docBlock):

@param mixed $replace Path to image, or array("path" => xx, "width" => yy, "height" => zz)