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