5

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

4

4 回答 4

17

html2pdf 支持页面标签:

protected function _tag_open_PAGE($param) {} 

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

<page orientation="l">
... some content ...
</page>
<page orientation="p">
... some content ...
</page>
于 2014-02-14T07:38:10.493 回答
13

基于 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();
    ...
}

解析Css.class.php 第 114 行:

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

第 1024 行向 switch case 添加了一个新的处理程序:

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

然后让它工作,你的 html 内容应该包含 break 元素

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

注意区分大小写的样式,不确定插件是否处理它

于 2013-01-04T16:43:02.610 回答
2

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

h1 {page-break-before:always}
于 2010-01-22T14:24:30.387 回答
2

我只是在遇到同样的问题后才知道这一点。他们使用的解析器确实支持 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();
于 2012-08-28T16:49:25.583 回答