在 OpenTBS 中:如何在 MS Word 模板中使用"new paragraph"回车符而不是"new line"



我有一个PHP变量,它包含纯文本,我需要使用OpenTBS将其插入到MS Word模板中。

我的Word占位符是:

[onshow.introduction]

问题是我使用对齐格式,所以我需要实际的"对齐";新段落";即";回车";(在Word中输入(。相反,我所有的换行符都被翻译成";新行";(shift-Enter(,打乱了我的格式。

我尝试插入
、\r\n、\r\n、\n\r、PHP_EOL-所有这些都只是在MS Word中创建换行符,而不是新的段落字符。

有什么办法可以得到";新段落";OpenTBS中Word中的字符?

在Ms Word中,新段落是一个复杂的XML实体。类似于:

<w:p><w:r><w:t>My paragraph</w:t></w:r></w:p>

并且它可以具有额外的属性和额外的子实体,这些子实体可以出现在多个地方。

因此,用</w:t></w:r><w:r><w:t>替换断线是非常敏感和危险的。

最好且稳健的解决方案是将文本分解为几个部分,并将其合并到一个以Ms-Word段落为边界的块上。

示例:

PHP:

// uniformize line breaks
$introduction = str_replace("n", "r", $introduction);
$introduction = str_replace("rr", "r", $introduction);
// explode in several parts
$introduction = explode("r", $introduction);
// merge on a block
$TBS->MergeBlock('intro', $introduction);

DOCX:

[intro.val;block=tbs:p]

最新更新