Разрыв страницы в Html2Pdf - PullRequest
       16

Разрыв страницы в Html2Pdf

4 голосов
/ 22 января 2010

Я нахожусь в процессе создания динамического файла PDF, который содержит данные около 10 000 пользователей, в целом, приложение разработано с использованием MySQL и PHP. Динамический контент настолько тяжел, что мне было трудно обрабатывать класс fpdf(). Поэтому я преобразовал свою выходную страницу PHP в файл HTML, используя ob_get_clean(). Теперь HTML-файл генерируется успешно, а также PDF-файл. Но я хочу оставить разрыв страницы после данных каждого пользователя, то есть данные каждого пользователя должны начинаться с новой страницы. Я не мог использовать какие-либо теги HTML, потому что в динамически генерируемом файле HTML все находится вне тегов <html> и </html>. Пожалуйста, помогите мне, чтобы некоторые, как я делаю разрыв страницы в файле PDF после данных каждого пользователя ... Заранее спасибо:)

Ответы [ 4 ]

13 голосов
/ 14 февраля 2014

html2pdf поддерживает тег page :

protected function _tag_open_PAGE($param) {} 

в строке 2229. Здесь вы можете увидеть, какие атрибуты поддерживаются.Например, следующее создает одну страницу в альбомной и одну в портретном режиме:

<page orientation="l">
... some content ...
</page>
<page orientation="p">
... some content ...
</page>
10 голосов
/ 04 января 2013

Основываясь на работе Макдабби (что не работает). Но благодаря ему идея верна.

Html2Pdf v4.03

Например, мы хотим проанализировать тег DIV:

html2pdf.class.php строка 2948:

protected function _tag_close_DIV($param, $other='div')
{
    if ($this->parsingCss->value['page-break-after'] == "always")
      $this->_setNewPage(null, '', null, $this->_defaultTop);
      $this->parsingCss->setPosition();
    ...
}

parsingCss.class.php Строка 114:

//add a new style declaration
public function initStyle()
{
    ...
    $this->value['page-break-after'] = null;
}

Строка 1024 добавляет новый обработчик в регистр коммутатора:

case 'page-break-after':
    $this->value[$nom] = $val;
    break;

И чтобы это работало, ваш HTML-контент должен содержать элемент break

 <div style="page-break-after:always; clear:both"></div>

Остерегайтесь чувствительного к регистру стиля, не уверен, что плагин справится с этим

2 голосов
/ 28 августа 2012

Я только что понял это после той же проблемы. синтаксический анализатор, который они используют, поддерживает тег разрыва страницы, но html2pdf не работает.

Я думаю, что у меня это работает, выполнив следующие модификации html2pdf.class:

вокруг линии 4174, первая вещь внутри:

protected function _tag_close_P($param){

должно быть:

   if($this->parsingCss->value['page-break-after'] == "always")
        $this->_setNewPage();

вокруг строки 2961, первая вещь внутри:

protected function _tag_close_DIV($param, $other='div'){

должно быть:

 if($this->parsingCss->value['page-break-after'] == "always")
        $this->_setNewPage();
2 голосов
/ 22 января 2010

Возможно, вы захотите использовать некоторые CSS, например:

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