这是一个众所周知的问题(即您是对的,它不起作用)。
很遗憾,没有特别好的解决方案 - 最简单的方法是使用空白的 1 像素图像文件。
通常的起点是反转嵌套,这样你就可以得到更像这样的东西......
{ INCLUDEPICTURE "{ IF "{ MERGEFIELD condition }" = "expression" "picture.png" }" }" \d }
这总是尝试插入图片,并且在{ MERGEFIELD condition } "expression" 的情况下会报告(并插入)错误。最简单的分辨率是有一张空白的 1 像素图片,您可以将其包含在内,例如
{ INCLUDEPICTURE "{ IF "{ MERGEFIELD condition }" = "expression" "picture.png" "blank1.png" }" }" \d }
有时删除测试和分配并单独执行会更清楚,尤其是在有多个测试的情况下。在这种情况下,
{ SET picname "{ IF "{ MERGEFIELD condition }" = "expression" "picture.png" "blank1.png" }" }
或者,如果您愿意,
{ IF "{ MERGEFIELD condition }" = "expression" "{ SET picname "picture.png" }" "{ SET picname "blank1.png" }" }
您仍然需要一个嵌套在 INNCLUDEPICTURE 中的 IF 才能使其工作。您可以使用:
{ INCLUDEPICTURE "{ IF TRUE { picname } }" \d }
如果您将这些嵌套字段合并到输出文档中,这些字段将保留在输出中。如果您希望解析字段(例如,因为您需要将输出发送给没有图像文件的人),那么您需要更多类似的东西:
{ IF { INCLUDEPICTURE "{ IF TRUE { picname } }" } { INCLUDEPICTURE "{ IF TRUE { picname } }" \d } }
我相信您可以将其减少到
{ IF { INCLUDEPICTURE "{ picname }" } { INCLUDEPICTURE "{ IF TRUE { picname } }" \d } }
事实上,我相信你可以插入你知道存在的任何图形文件的完整路径+名称,而不是第一个 { picname },例如
{ IF { INCLUDEPICTURE "the full pathname of blank1.png" } { INCLUDEPICTURE "{ IF TRUE { picname } }" \d } }
但您应该检查这些是否适合您。
编辑
FWIW,最近的一些测试表明,虽然图片显示未链接,但保存/重新打开会显示一个重构的链接(在末尾附近有一个 *MERGEFORMATINET),并且图片预计将位于该位置在这些链接中指出。这是否是由于 Word 的变化我无法判断。如果有任何变化,这似乎是试图在 Word 在 .docx 中创建的关系记录中允许一些相对路径寻址。
一些观察...
- 确保路径有双反斜杠,例如
c:\\mypath\\blank1.png 。这通常对于任何路径都是必需的
硬编码到字段中。对于通过嵌套字段进入的路径
代码,请检查。
- 一般来说,使用 INCLUDEPICTURE 字段更容易
当文档是 .doc 而不是 .docx 时,并确保
文件->选项->高级->常规->Web选项->文件->“更新链接
保存时”被选中。否则,Word 更有可能替换
INCLUDEPICTURE 字段的结果无法重新显示为
使用 Alt-F9 的字段
- 当您想将 IF 字段中的比较数视为字符串时,它
建议用双引号将它们括起来,就像我所做的那样。
否则,解析为名称的 { MERGEFIELD } 字段
书签的行为可能不像您希望的那样。否则,间距和
报价很大程度上取决于个人选择。
到目前为止,这些字段构造都不会处理您的图片路径名称可能存在或可能不存在的情况。如果这是您需要的,请修改您的原始问题。