Html2Pdf中的分页符

时间:2010-01-22 14:16:23

标签: php mysql page-break html2pdf

我正在生成动态pdf文件,其中包含大约10,000个用户的数据,通常应用程序是使用MySQL和PHP开发的。动态内容非常繁重,我发现很难用fpdf()类进行处理。所以我使用ob_get_clean()将输出的PHP页面转换为HTML文件。现在成功生成html文件以及pdf文件。但是我想在每个用户的数据之后留下一个分页符,即每个用户的数据必须在一个新的页面中开始。我无法使用任何HTML代码,因为在动态生成的HTML文件中,所有内容都不在<html></html>标记之内。请帮助我,以便我在每个用户的数据之后如何在pdf文件中进行分页...提前感谢:)

4 个答案:

答案 0 :(得分:12)

html2pdf支持页面标记:

protected function _tag_open_PAGE($param) {} 

在第2229行。您可以看到支持哪些属性。例如,以下创建一个横向页面和一个纵向模式页面:

<page orientation="l">
... some content ...
</page>
<page orientation="p">
... some content ...
</page>

答案 1 :(得分:10)

基于macdabby的工作(不起作用)。但多亏了他,这个想法是正确的。

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 :(得分:2)

你可能想要使用一些css,例如:

h1 {page-break-before:always}

答案 3 :(得分:2)

我在遇到同样的问题之后才想到这一点。他们使用的解析器DOES支持page-break-after标记,但是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();