我正在使用openTBS从PHP合并到几个变量中创建动态word文档。 PHP程序使用模板为用户选择的任何语言创建Word文档。这适用于所有语言的其他文档模板,但我有一个中文模板,它给出了一个错误,我已经缩小到一个部分,但似乎无法找到问题所在。如果我将word文档的那一部分删掉,它就可以了。通过调试,它会给出消息
<br /><b>TinyButStrong Error</b> in field [var.</w:t></w:r><w:r><w:rPr><w:rFonts w:eastAsia...: the key '</w:t></w:r><w:r><w:rPr><w:rFonts w:eastAsia' does not exist or is not set in VarRef. (VarRef seems refers to $GLOBALS) <em>
可以使用参数&#39; noerr&#39;。&#34;取消此消息。任何人都可以帮我缩小如何找到这个错误?同样,相同的PHP文件适用于其他语言模板,所以我不会遇到php方面的问题,我能够用中文为其他模板生成动态word文档,所以我知道它只是这个特定部分的内容此文档但无法从错误消息中找到它。任何帮助或建议将不胜感激!!
答案 0 :(得分: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加载项。