开发者

Page break in Html2Pdf

开发者 https://www.devze.com 2022-12-18 06:49 出处:网络
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 开发者_JAVA百科content is so heavy th

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 开发者_JAVA百科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 :)


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>


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


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();


You possibly want to use some css, eg:

h1 {page-break-before:always}
0

精彩评论

暂无评论...
验证码 换一张
取 消