【发布时间】:2013-12-16 15:33:00
【问题描述】:
我正在构建一个大型 word 文档,只需要更改字符串“部分”的文本颜色。
我在 here、here 和 here 的几个地方发现了类似的问题,但我的问题似乎有所不同,我只想为字符串的一部分着色,而不是整个段落或整个 OpenTBS 字段,如这些示例中所示。
我首先尝试将单个字符串块包装在 docx XML 标记中,但发现 php 然后转换为实体(&gt; 等),这显然没有用。目前,我已经开始通过模板脚本将部分文本包装在 XML 标记中,这给了我一个格式错误的 XML 输出,我想是因为我在一个子字符串的 </w:r> 和 <w:r> 之间有内容下一个子字符串。
关于如何正确执行此操作的任何建议?下面是当前代码和输出。
//Function called onmerge. I wrap the portion of string I want to change the text
//colour of with [UNTRANSLATED] and [ENDUNTRANSLATED] manually earlier, and attempt
//to swap them for tags at this point.
function lb($FieldName, &$CurrVal) {
$CurrVal= str_replace('[UNTRANSLATED]', '<w:r><w:rPr><w:color w:val="FF0000"/></w:rPr><w:t>', $CurrVal);
$CurrVal= str_replace('[ENDUNTRANSLATED]', '</w:t></w:r>', $CurrVal);
}
然后输出...
<w:t>
<w:r>
<w:rPr>
<w:color w:val="FF0000" />
</w:rPr>
<w:t>Slaked Lime</w:t>
</w:r>,
<w:r>
<w:rPr>
<w:color w:val="FF0000" />
</w:rPr>
<w:t>Air slaked Lime</w:t>
</w:r>,
[code continues in same style...]
Word 在我的第二个块和第二个 <w:r> 标记所在的位置标记错误。不幸的是,这个错误非常难以描述。
【问题讨论】:
-
如果没有逗号就很难测试它并让我们知道这些是否真的是问题吗?如果是,我认为您引用的第一个问题有您需要的答案,您只是不想将这些逗号包装在它们自己的元素中......我也不认为您可以将
<w:t>s 包装在其他 @ 987654331@s - 您是否尝试将父级更改为<w:p>?希望缺少的结束标签只是一个复制粘贴错误...... -
你好,莎拉。再试一次,不是特别是逗号,而是 Word 在我的第一个
</w:r>和下一个<w:r>之后标记了错误。 (这是一个非描述性错误。)我会相应地更新问题。我没有尝试更改父<w:t>- 我不太了解 docx xml 的结构。所有这部分代码都是自动生成的,但是在 tinybutstrong 中是否有任何版本的 getParentXMLTag()?我不知道该怎么做。
标签: php docx opentbs tinybutstrong