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 :)
问题:
回答1:
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();
回答2:
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>
回答3:
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
回答4:
You possibly want to use some css, eg:
h1 {page-break-before:always}