使用 unoconv 转换时,docx 文件中显示的图像在 pdf 中不可见,而图像使用
显示$document = new \PhpOffice\PhpWord1\TemplateProcessor($docx_temp_file_path);
$imagePath = '/abc.png';
if (file_exists($imagePath)) {
$document->setImageValue($key, $imagePath);
}
这是unoconv代码
public function docxToPdf( $docx_file_path, $pdf_file_path )
{
$pythonPath = '/usr/bin/python';
$unoconvPath = '/usr/bin/unoconv';
$command = sprintf(
'"%s" "%s" -f pdf "%s" 2>&1',
$pythonPath,
$unoconvPath,
$docx_file_path
);
exec($command, $output, $return);
//
if (is_array($output) && !empty($output[0])) {
throw new Exception(json_encode(implode('; ', $output), true));
}
return true;
}
这里附上 docx 文件的示例链接docx 文件
您的 Word 文档页脚中包含 3 个图像。 footer1.xml 文件包含以下内容:
<w:pict><v:shape type="#_x0000_t75" style="width:;height:70px" stroked="f"><v:imagedata r:id="rId1" o:title=""/></v:shape></w:pict>
<w:pict><v:shape type="#_x0000_t75" style="width:;height:70px" stroked="f"><v:imagedata r:id="rId3" o:title=""/></v:shape></w:pict>
<w:pict><v:shape type="#_x0000_t75" style="width:;height:70px" stroked="f"><v:imagedata r:id="rId2" o:title=""/></v:shape></w:pict>
所有图片都有这种风格:
width:;height:70px
如您所见,宽度缺失。在这种情况下,Word 使用默认值,但 LibreOffice 不显示图像。 由于 unoconv 使用 LibreOffice 转换为 PDF,因此生成的文档中缺少图像。
我可以通过在模板中指定来重现该问题:
${key::70:false}
您可以通过指定宽度来修复它:
${key:70:70:false}
或者通过删除比率参数:
${key::70}