在 OpenTBS 中:如何在 MS Word 模板中使用 "new paragraph" 回车符 returns 而不是 "new line"
In OpenTBS: How to use "new paragraph" carriage returns instead of "new line" in MS Word Templates
我有一个 PHP 变量保存纯文本,我需要使用 OpenTBS 将其插入到 MS Word 模板中。
我的 Word 占位符是:
[onshow.introduction]
问题是我使用了对齐格式,所以我需要实际的“新段落”,即 Word 中的“回车 returns”(回车)。相反,我所有的换行符都被翻译成“换行符”(shift-Enter),弄乱了我的格式。
我尝试插入
、\r、\n、\n\r、\r\n、PHP_EOL - 所有这些都只是创建换行符而不是新段落字符在 MS Word 中。
有什么方法可以从 OpenTBS 获取 Word 中的“新段落”字符吗?
在 Ms Word 中,新段落是一个复杂的 XML 实体。类似于:
<w:p><w:r><w:t>My paragraph</w:t></w:r></w:p>
它可以有额外的属性和额外的 sub-entities 可以出现在几个地方。
所以用 </w:t></w:r><w:r><w:t>
替换你的 line-breaks 会非常敏感和危险。
最佳且稳健的解决方案是将您的文本拆分成几个部分,然后将其合并到一个以 Ms Word 段落为界的块中。
示例:
PHP:
// uniformize line breaks
$introduction = str_replace("\n", "\r", $introduction);
$introduction = str_replace("\r\r", "\r", $introduction);
// explode in several parts
$introduction = explode("\r", $introduction);
// merge on a block
$TBS->MergeBlock('intro', $introduction);
DOCX:
[intro.val;block=tbs:p]
我有一个 PHP 变量保存纯文本,我需要使用 OpenTBS 将其插入到 MS Word 模板中。
我的 Word 占位符是:
[onshow.introduction]
问题是我使用了对齐格式,所以我需要实际的“新段落”,即 Word 中的“回车 returns”(回车)。相反,我所有的换行符都被翻译成“换行符”(shift-Enter),弄乱了我的格式。
我尝试插入
、\r、\n、\n\r、\r\n、PHP_EOL - 所有这些都只是创建换行符而不是新段落字符在 MS Word 中。
有什么方法可以从 OpenTBS 获取 Word 中的“新段落”字符吗?
在 Ms Word 中,新段落是一个复杂的 XML 实体。类似于:
<w:p><w:r><w:t>My paragraph</w:t></w:r></w:p>
它可以有额外的属性和额外的 sub-entities 可以出现在几个地方。
所以用 </w:t></w:r><w:r><w:t>
替换你的 line-breaks 会非常敏感和危险。
最佳且稳健的解决方案是将您的文本拆分成几个部分,然后将其合并到一个以 Ms Word 段落为界的块中。
示例:
PHP:
// uniformize line breaks
$introduction = str_replace("\n", "\r", $introduction);
$introduction = str_replace("\r\r", "\r", $introduction);
// explode in several parts
$introduction = explode("\r", $introduction);
// merge on a block
$TBS->MergeBlock('intro', $introduction);
DOCX:
[intro.val;block=tbs:p]