删除 DocxTemplater 中的空行

Remove empty line in DocxTemplater

我正在使用 DocxTemplater 和 Node。

我正在尝试弄清楚如果元素为空(即 '' 或 null)如何删除空行 - 我似乎无法在 SO 或其他地方找到类似的案例!

我在 Docx 上的占位符如下所示:

{#data}
{#input}
{Line1}
{Line2}
{Line3}
{/input}
{/data}

任何我的阵列看起来像这样:

data: {
    input: {
        Line1: 'TEXT1',
        Line2: '',
        Line3: 'TEXT3'
    },
}

当我创建文档时,我想删除 'Line2' 所在的行,因为它是空的。

所以不是这个:

TEXT1

TEXT3

我愿意

TEXT1
TEXT3

更新

按照建议将我的代码更改为以下内容,但是没有任何成功。还有更多的指点吗?提前致谢!

{#data}
{#input}
{#Line1}{Line1}{/Line1}
    {#hasLine2}{Line2}{/hasLine2}
    {#Line3}{Line3}{/Line3}
{/input}
{/data}

data: {
    input: {
        Line1: 'TEXT1',
        Line2: '',
        Line3: 'TEXT3',
        hasLine2: false
    },
}

显然In docxtemplater, conditions and loops use the same syntax called Sections

因此您可以将模板制作成:

{#data}
  {#input}
    {#Line1}{.}{/Line1}
    {#Line2}{.}{/Line2}
    {#Line3}{.}{/Line3}
  {/input}
{/data}

我是 docxtemplater 的创建者

你可以这样做:

{#data}
{#input}
{#Line1}
{Line1}
{/Line1}
{#hasLine2}
{Line2}
{/hasLine2}
{#Line3}
{Line3}
{/Line3}
{/input}
{/data}

你在你的代码中:

new Docxtemplater()
    .loadZip(zip)
    .setOptions({paragraphLoop:true})

使用 paragraphLoop 选项,如果循环的开始和结束在不同的段落中,那么当您的部分为空时,您将不会获得任何额外的space。

这在此处记录:https://docxtemplater.readthedocs.io/en/latest/configuration.html?highlight=paragraphLoop#paragraphloop