如何创建特定的 openTBS Word 模板?

How to create a specific openTBS Word Template?

我有一个 php 程序,它使用 TinyButStrong 和 OpenTBS 插件。我尝试了很多例子,也直接编辑了 xml。尽管如此,我还是不明白,所有的实验开始让我感到沮丧,所以这是我的问题:

该模板只是一封写给客户的标准信函,上面有地址信息,如下所示:

[a;block=w:body]

[a.company_name; magnet=w:p]
[a.first_name][a.last_name]
[a.street]  
[a.postalcode] [a.city]
[a.country]  

作为xml它看起来像:

<w:p w:rsidR="001A4536" w:rsidRDefault="007D3CAF">
    <w:r w:rsidRPr="007D3CAF">
        <w:t>[a;block=w:body]</w:t>
    </w:r>
</w:p>
<w:p w:rsidR="007D3CAF" w:rsidRDefault="007D3CAF">
    <w:r w:rsidRPr="007D3CAF">
        <w:t xml:space="preserve">[a.company_name; magnet=w:p] </w:t>
    </w:r>
</w:p>
<w:p w:rsidR="007D3CAF" w:rsidRDefault="007D3CAF">
    <w:r w:rsidRPr="007D3CAF">
        <w:t>[a.first_name] [a.last_name]</w:t>
    </w:r>
</w:p>
<w:p w:rsidR="007D3CAF" w:rsidRDefault="007D3CAF" w:rsidP="007D3CAF">
    <w:r>
        <w:t>[a.street]</w:t>
    </w:r>
</w:p>
<w:p w:rsidR="007D3CAF" w:rsidRDefault="007D3CAF" w:rsidP="007D3CAF">
    <w:r>
        <w:t>[a.postalcode] [a.city]</w:t>
    </w:r>
</w:p>

如果没有公司名称或没有名字和姓氏,则不应浪费一行。我该如何实现?

如果有比 openTBS 更好的创建 word 文档的方法,我也会考虑吗?

首先,您的块定义 block=w:body 不合适,因为 XML 内容中只能有一个 <w:body> 元素。但是 TBS 会为您数据中的每条记录复制此元素。

您应该将 block=w:body 更改为 block=tbs:p+tbs:p+tbs:p+tbs:p+tbs:p,它定义了超过 5 个段落的块。

In case there is no company name or no first and lastname there shouldn't be a line wasted. How do I achieve that?

TBS 字段[a.company_name; magnet=w:p] 使用正确。 您可以对名字+姓氏使用相同的方法,但在这种情况下,您必须定义一个数据列,它是两者的串联,以便在其上使用 magnet 参数。如果您无法定义数据列,您可以使用参数 ondata 和自定义 PHP 函数来添加虚拟列。