2017-02-02 18 views
6

Так что в основном я использую wkhtmltopdf для преобразования динамического HTML-отчета в PDF.Как вставить разрыв страницы в HTML, поэтому wkhtmltopdf анализирует его?

Отчет имеет конкретный формат, и меня попросили клонировать этот формат с помощью HTML.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу имитировать 100% -ный функциональный разрыв страницы в html, поэтому wkhtmltopdf может интерпретировать ее и отправлять контент на другую страницу.

Я пытаюсь избежать методов измерения размера страницы и так далее.

TIA за предоставленную помощь.

EDIT: До сих пор я эмулирую разрыв страницы, используя <br>, и он работает. Тем не менее, мне все же нужно провести некоторое тестирование.

+1

'wkhtmltopdf' должен уважать CSS [@media print] (https://developer.mozilla.org/en-US/docs/Web/CSS/@media) правила – dwarring

+0

Хорошо, это с чего начать. Я попытаюсь узнать больше об этих правилах. TY – lenord

ответ

11

Укажите правило CSS, относящееся к типу печатного носителя. Есть a number of properties that can be used for paging. Мне легче всего подключить свойство page-break-before к классу, как показано ниже.

В HTML:

<p>Page 1, paragraph 1</p> 
<p class="new-page">Page 2, paragraph 1</p> 
<p>Page 2, paragraph 2</p> 

В CSS:

@media print { 
    .new-page { 
    page-break-before: always; 
    } 
} 
+0

Хотя я решил это, как обезьяна, добавив
и пытаясь пока мне это нравится, это действительно полезный подход к тому, что я просил, и я очень ценю. – lenord

+1

Возможно, вам также потребуется указать аргумент '--print-media-type', чтобы он выполнял' @media print'. – Jared

4

Когда я использую wkhtmltopdf, я работаю со следующими классами:

.keep-together { 
    page-break-inside: avoid; 
} 

.break-before { 
    page-break-before: always; 
} 

.break-after { 
    page-break-after: always; 
} 

Так что я могу заставить:

  • То, что конкретное содержимое контейнера не распространяется на две страницы (если оно соответствует одной странице). При использовании класса keep-together разрыв страницы создается перед контейнером, если это необходимо.
  • Чтобы разрыв страницы был вынужден перед конкретным контейнером.
  • Это разрыв страницы принудительно после определенного контейнера.

@media print не работал для меня с wkhtmltopdf.