如何在使用 fop 使用 XSL:FO 从 XML 生成 pdf 时在所有页面中添加动态 header?
How to add dynamic header in all the pages while generating pdf from XML using XSL:FO using fop?
我必须生成一个动态而非静态的 header,其值来自 xml file.I 我正在使用 XSl:FO 生成 PDF使用 XML.I 想在所有页面中添加一个部分引用。
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>
如何调用此块自动出现在所有页面中?
在 XSL FO 中,您不会放置 block-container 绝对定位来尝试重复 header。它只会放在它出现的页面上,而不是所有页面上。
您将 static-content 用于 xsl-region-before。所以你的 page-sequence 应该看起来像这样:
<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>
您可以在 layout-master-set 中为相关 page-master 定义 header 和 body 区域的大小。
现在,如果 header 中的动态内容取决于您所在的 section/page,那么您可以使用 fo:marker 和 fo:retrieve 标记来提取您所在页面的内容进入 header.
有关标记以及如何使用它们将信息拉入静态区域的教程,请参阅 http://www.renderx.com/tutorial.html#Markers。
我必须生成一个动态而非静态的 header,其值来自 xml file.I 我正在使用 XSl:FO 生成 PDF使用 XML.I 想在所有页面中添加一个部分引用。
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>
如何调用此块自动出现在所有页面中?
在 XSL FO 中,您不会放置 block-container 绝对定位来尝试重复 header。它只会放在它出现的页面上,而不是所有页面上。
您将 static-content 用于 xsl-region-before。所以你的 page-sequence 应该看起来像这样:
<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>
您可以在 layout-master-set 中为相关 page-master 定义 header 和 body 区域的大小。
现在,如果 header 中的动态内容取决于您所在的 section/page,那么您可以使用 fo:marker 和 fo:retrieve 标记来提取您所在页面的内容进入 header.
有关标记以及如何使用它们将信息拉入静态区域的教程,请参阅 http://www.renderx.com/tutorial.html#Markers。