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

#ruby-on-rails #ruby-on-rails-3 #pdf #header #pdfkit

#ruby-on-rails #ruby-on-rails-3 #PDF #заголовок #pdfkit

Вопрос:

В настоящее время я использую pdfkit в приложении 3.0.5 rails для создания отчетов об активности пользователя. Документ 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
  

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

Комментарии:

1. Похоже, что эта ошибка связана с wkhtmltopdf @ code.google.com/p/wkhtmltopdf/issues/detail?id=9

Ответ №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.