0

我正在使用 openTBS 从 PHP 合并多个变量创建动态 Word 文档。PHP 程序使用模板为用户选择的任何语言创建 Word 文档。这适用于所有语言的其他文档模板,但我有一个中文模板,它给出了一个错误,我已经缩小到一个部分,但似乎找不到问题所在。如果我把 word 文档的那一部分留出来,它就可以正常工作。通过调试它会给出消息

<br /><b>TinyButStrong Error</b> in field &#91;var.</w:t></w:r><w:r><w:rPr><w:rFonts w:eastAsia...: the key '&lt;/w:t&gt;&lt;/w:r&gt;&lt;w:r&gt;&lt;w:rPr&gt;&lt;w:rFonts w:eastAsia' does not exist or is not set in VarRef. (VarRef seems refers to $GLOBALS) <em>

可以使用参数“noerr”取消此消息。
“。谁能帮我缩小如何找到这个错误的范围?同样,相同的 PHP 文件适用于其他语言模板,所以我在 php 方面没有问题,我可以为其他语言生成动态的中文 word 文档模板,所以我知道它只是本文档此特定部分中的内容,但无法从错误消息中找到它。任何帮助或建议将不胜感激!

4

1 回答 1

0

很可能某些转换为 UTF8 的汉字有一个';',并且这些字符已经破坏了它们嵌入的一些父 TBS 字段。

由于您使用的是嵌入字段,因此[onload;block=tbs:section;when [var.anf]=0]您必须确保嵌入字段的值不会使用空格字符(例如;或)破坏父字段'

这是因为有时对父字段进行全局评估,而不仅仅是逐个参数。

因此,如果您的嵌入值[var.anf]可能包含“;” (就像特殊的 UTF8 字符一样),你应该像这样保护它们:

[onload;block=tbs:section;when '0'='[var.anf]']

另一点是 TBS 错误消息显示字段 [var.something] 以不可见的额外 XML 组成 ( </w:t></w:r>...) 保存。OpenTBS 试图清理那些多余的,但有时它无法做到。您可以通过选择它们、剪切然后粘贴而不格式化来清理这些额外的 XML 组成。另一种解决方案是使用OpenTBS 软件包中提供的用于 Microsoft Word的 OpenTBS 插件。

于 2017-06-13T09:06:30.200 回答