使用pisa / xhtml2pdf在第一页和连续页面上显示不同的页脚

时间:2012-01-20 20:56:07

标签: footer pisa xhtml2pdf

我在将一个页脚显示为比萨文档的第一页上的一个框架时,以及在每个其他页面上显示为另一个框架时遇到了一些麻烦。我试图从here调整lastPage的想法,但没有运气。

有可能这样做吗? <pdf:nextpage />似乎不是正确的,因为文档有一个可能(或可能不)流过多个页面的长表。 <pdf:nextframe />加上只有第一页的框架看起来很有希望,但我不确定如何使用它。

目前我(为了简洁起见):

<style type="text/css">
  @page {
    margin: 1cm;
    margin-bottom: 2.5cm;
    @frame footer {
      -pdf-frame-content: footerFirst;
      -pdf-frame-border: 1;
      bottom: 2cm;
      margin-left: 1cm;
      margin-right: 1cm;
      height: 1cm;
   }
   @frame footer {
      -pdf-frame-content: footerOther;
      bottom: 2cm;
      margin-left: 1cm;
      margin-right: 1cm;
      height: 1cm;
}
</style>
<body>
  <table repeat="1">
    <!-- extra long table here -->
  </table>
  <div id="footerContent">This is a footer</div>
  <!-- what goes here to switch frames after the first page? -->
  <div id="footerOther"></div>
</body>

这会在每个页面上放置相同的页脚。我需要在每个连续页面上留下相同的空间,但框架中没有内容。

1 个答案:

答案 0 :(得分:5)

您可以按名称定义其他布局,然后告诉xhtml2pdf使用nexttemplate标记显式切换到它们。我最近这样做是为了在我的第一页上没有标题,而是在所有后续页面上显示它。

您应该将@page定义更改为两个不同的页面,可能是这样的:

<style type="text/css">
  @page {
    margin: 1cm;
    margin-bottom: 2.5cm;
    @frame footer {
      -pdf-frame-content: footerFirst;
      -pdf-frame-border: 1;
      bottom: 2cm;
      margin-left: 1cm;
      margin-right: 1cm;
      height: 1cm;
   }
 }

 @page innerpages {
   margin: 1cm;
   margin-bottom: 2.5cm;
   @frame footer {
      -pdf-frame-content: footerOther;
      bottom: 2cm;
      margin-left: 1cm;
      margin-right: 1cm;
      height: 1cm;
   }
 }
</style>

然后,在你想要切换到不同布局的html中,使用这样的标记:

<pdf:nexttemplate name="innerpages"/>

下一页(以及后续页面,直到您再次更改模板)将使用内页面布局和“其他”页脚。