Как добавить заголовки на определенные страницы, созданные pdfkit в формате PDF

В настоящее время я использую pdfkit в приложении rails 3.0.5 для создания отчетов об активности пользователя. Документ в формате PDF прост, на первой странице есть некоторые сведения о пользователе, сводка, а затем таблица, содержащая всю активность пользователя за выбранный период.

Первая страница в порядке, но когда я показываю таблицу, следующие страницы должны начинаться с названий столбцов заголовка на каждой странице с заголовком таблицы действий. (напоминает выписку из банка) Что-то вроде этого:

|user   |action   | source  | destination  |date-time          |
 xxx     1          1         2             2011-04-01 hh:mm:ss
 ....
 ====================page break=================================
 #after page break the column titles must be printed again

|user   |action   | source  | destination  |date-time          |
 xxx     5          4         5             2011-04-05 hh:mm:ss

Кто-нибудь знает, как я могу это сделать?


person AndreDurao    schedule 12.04.2011    source источник
comment
Похоже, эта ошибка связана с wkhtmltopdf @ code.google.com/ p/wkhtmltopdf/issues/detail?id=9   -  person AndreDurao    schedule 13.04.2011


Ответы (1)


Вы должны иметь возможность использовать некоторый javascript для изменения содержимого заголовка, но только на определенных страницах.

в вашем заголовке html есть скрытый div с заголовками вашей таблицы, но ваш заголовок первой страницы по умолчанию. Затем с помощью функции загрузки javascript сделайте что-то вроде этого:

<html>
  <head>
    <script type='text/javascript'>
      function swap_header() {
        var pages = document.getElementsByClassName('header');
        for (var i=0; i<pages.length; ++i) {
          if ( i > 0 ) {
            pages[i].innerHTML = '<table><thead><th>user</th><th>action</th></thead></table>';
          }
        }
      }
    </script>
  </head>
  <body onload='swap_header()'>
    <div class='header'>Normal 1st page header</div>
    <table>
     <tr><td>foo</td><td>bar</td></tr>
    </table>
  </body>
</html>

Вы также можете отобразить 2 разных PDF-файла и программно объединить их с помощью pdftk.

person Unixmonkey    schedule 21.04.2011