如何将图像动态插入 docx 模板?

Posted

技术标签:

【中文标题】如何将图像动态插入 docx 模板?【英文标题】:How to dynamically insert images to docx template? 【发布时间】:2010-08-26 11:46:35 【问题描述】:

在我的网络应用程序中,我使用 phplivedocx 进行文本更改。但我还需要动态更改我的 docx 模板中的图像。 你推荐什么工具?

提前致谢。

【问题讨论】:

您是在寻找使用 PhpLiveDocx 的解决方案,还是可以使用其他工具进行 Docx 合并? 【参考方案1】:

找到了解决办法。

来自 phplivedocx 论坛的引用: “我找到了一种在将动态图像发送到 LiveDocx 之前在 docx 模板中插入动态图像的方法(因此它不适用于托管模板)。

我就是这样做的(在 PHP 中): - 首先我在我的本地单词模板中放置了一个默认图像 - 在生成 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();

【讨论】:

【参考方案2】:

也可以用于多个图像。 在 document.xml 中,您可以找到具有原始名称的图像。链接到图像的是带有嵌入代码的。 您可以在 _rels/document.xml.rels 的关系中找到相同的代码。此关系中的目标指向正确的图像编号

【讨论】:

【参考方案3】:

如果您有兴趣,我已经创建了扩展,可以轻松完成这项工作 - https://github.com/igorrebega/docx-replacer

此代码会将文本 $search 替换为位于 $pathToDocx 文件中的 $path 中的图像

$docx = new IRebega\DocxReplacer($pathToDocx);

$docx->replaceTextToImage($search, $path);

【讨论】:

以上是关于如何将图像动态插入 docx 模板?的主要内容,如果未能解决你的问题,请参考以下文章

超简单Python将指定数据插入到docx模板指定位置渲染并保存

java用模板生成word(docx)文档(含动态表格)

将图像插入 .docx 文件

TVML/TVJS 中的动态 XML 模板

使用DocX开源组件,实现动态数据的填充。

从java中的模板文件创建docx文件