Показывать разные нижние колонтитулы на первой и последующих страницах с помощью pisa / xhtml2pdf - PullRequest
4 голосов
/ 21 января 2012

У меня возникли проблемы с отображением нижнего колонтитула в виде одного фрейма на первой странице документа в Пизе и в виде другого фрейма на любой другой странице.Я попытался адаптировать идею 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 Ответ

5 голосов
/ 20 марта 2012

Вы можете определить дополнительные макеты по имени, а затем указать 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"/>

На следующей странице (и последующих страницах до повторного изменения шаблона) будет использоваться макет внутренних страниц с вашим «другим» нижним колонтитулом.

...