在我的网络应用程序中,我使用 phplivedocx 进行文本更改。但我还需要动态更改我的 docx 模板中的图像。你推荐什么工具?
提前致谢。
找到了解决方案。
来自 phplivedocx 论坛的引用:“我找到了一种在将动态图像发送到 LiveDocx 之前在 docx 模板中插入动态图像的方法(因此它不适用于托管模板)。
这就是我这样做的方式(在 Php 中): - 首先,我在本地 word 模板中放置了一个默认图像 - 在生成 PDF 之前,将 docx 视为一个 zip 存档(您可以手动提取以确认它),所以: - 在此存档中,将文件 /word/media/image1.png 替换为动态图像(平面 png 格式,不知道格式限制) - 关闭存档。
在这一步,如果你在word中打开docx模板,你就可以看到动态图片替换了默认图片。
之后,您可以处理对 liveDocx 的请求。
这种方法有一些限制,我希望 Boilerplate mecanism 很快就会以更好的方式做到这一点,但就我而言,它就像我想要的那样工作。"
以下是如何在 php 中更改 docx 模板中的图像的代码:
$zip = new ZipArchive;
$zip->open('documents/template_tm.docx');
$zip->addFile('new_image.png', 'word/media/image1.png');
$zip->close();
也可以用于多个图像。在 document.xml 中,您可以找到具有原始名称的图像。链接到图像的是带有嵌入代码的。您可以在 _rels/document.xml.rels 的关系中找到相同的代码。此关系中的目标指向正确的图像编号
如果您有兴趣,我已经创建了扩展,可以轻松完成这项工作 - https://github.com/igorrebega/docx-replacer
此代码会将文本$search替换为$pathToDocx文件中$path中的图像
$docx = new IRebega\DocxReplacer($pathToDocx);
$docx->replaceTextToImage($search, $path);