在使用FOP的XSL:FO从XML生成pdf的同时,如何在所有页面中添加动态标头?

时间:2019-05-22 09:11:48

标签: xml header pdf-generation xsl-fo apache-fop

我必须生成一个动态的而不是静态的标头,其值来自xml文件。我正在使用XSl:FO使用XML生成pDF。我想添加一个引用部分页面。

XSl文件:

`<xsl:template match="References">
    <fo:block-container height="12cm" width="5cm" top="15mm" left="12cm" position="absolute">
        <fo:block font-size="8pt" font-family="Verdana">
            <xsl:apply-templates/>
        </fo:block>
    </fo:block-

'

XML文件:

            <Referentces>
                <lbl>Date</lbl>
                <div>$date</div>
                <lbl>From</lbl>
                <div>$brief.owner</div>
                <div>T $brief.tel</div>
                #if($brief.fax)
                <div>F $brief.fax</div>
                #end
              </Referenties>

我如何调用此块以自动出现在所有页面中?

1 个答案:

答案 0 :(得分:0)

在XSL FO中,请勿将绝对位置的块容器放置为尝试重复头。它将仅放置在发生它的页面上,而不是所有页面上。

您将静态内容用于xsl-region-before。因此,您的页面顺序应如下所示:

 <fo:page-sequence master-reference="page">
      <fo:static-content flow-name="xsl-region-before">
          <fo:block>This is content on every page</fo:block>
      </fo:static-content>
      <fo:flow flow-name="xsl-region--body">
          <!-- body content here -->
      </fo:flow>
  </fo:page-sequence>

您可以在所讨论的页面母版的布局母版集中定义页眉和正文区域的大小。

现在,如果标题中的动态内容取决于您所在的部分/页面,则可以使用fo:marker和fo:retrieve-marker将内容从所在页面中拉到标题中。

有关标记的教程,以及如何使用它们将信息拉入静态区域的教程,请参见http://www.renderx.com/tutorial.html#Markers