Page break in Html2Pdf

后端 未结 4 569
野性不改
野性不改 2020-12-06 08:18

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

相关标签:
4条回答
  • 2020-12-06 08:45

    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

    0 讨论(0)
  • 2020-12-06 08:53

    You possibly want to use some css, eg:

    h1 {page-break-before:always}
    
    0 讨论(0)
  • 2020-12-06 08:58

    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>
    
    0 讨论(0)
  • 2020-12-06 09:01

    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();
    
    0 讨论(0)
提交回复
热议问题