Page break in Html2Pdf

2019-01-18 15:39发布

I am in the process of generating a dynamic pdf file, which contains data of around 10,000 users, in general the app is developed using MySQL and PHP. The dynamic content is so heavy that, I found it difficult to process with fpdf() class. So I converted my output PHP page as a HTML file using ob_get_clean(). Now the html file is generated successfully and also the pdf file. But i want to leave a page break after each user's data, that is every user's data must start in a fresh page. I couldn't use any HTML tags because, in the dynamically generated HTML file, everything is out of the <html> and </html> tags. Please help me so that some how i make a page break in the pdf file after every user's data... Thanks in advance :)

4条回答
beautiful°
2楼-- · 2019-01-18 15:56

Basing on macdabby's work (which doesn't work). But thanks to him, the idea is correct.

Html2Pdf v4.03

For example we want to parse a tag DIV:

html2pdf.class.php line 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 Line 114:

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

Line 1024 add a new handler to the switch case:

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

And then for it to work, your html content should contain the break element

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

Watch out for case sensitive style, not sure if the plugin handle it

查看更多
迷人小祖宗
3楼-- · 2019-01-18 15:59

i just figured this out after having the same problem. the parser that they use DOES support the page-break-after tag, but the html2pdf does not work.

i think i have it working by doing the following modifications to html2pdf.class:

around line 4174, the first thing inside:

protected function _tag_close_P($param){

should be:

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

around line 2961, the first thing inside:

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

should be:

 if($this->parsingCss->value['page-break-after'] == "always")
        $this->_setNewPage();
查看更多
The star\"
4楼-- · 2019-01-18 16:08

html2pdf supports page tag:

protected function _tag_open_PAGE($param) {} 

at line 2229. You can see there what attributes are supported. For example following creates one page in landscape and one in portrait mode:

<page orientation="l">
... some content ...
</page>
<page orientation="p">
... some content ...
</page>
查看更多
仙女界的扛把子
5楼-- · 2019-01-18 16:12

You possibly want to use some css, eg:

h1 {page-break-before:always}
查看更多
登录 后发表回答