TCPDF中的手动分页符

swa*_*rwe 35 pdf pdf-generation page-break tcpdf

我正在使用TCPDF在我的一个项目中生成PDF.我只是创建一个HTML文件并将其提供给TCPDF来处理PDF生成.但现在我有一些HTML,其中一个接一个地添加多个证书,我想在其中有一个分页符.Page Break应该由HTML决定,即我想知道TCPDF中是否有任何HTML标识符,然后相应地在生成的PDF中添加分页符.

我怎么能这样做?

小智 70

我正在使用<br pagebreak="true"/>.

查找方法writeHTML和代码

if ($dom[$key]['tag'] AND isset($dom[$key]['attribute']['pagebreak'])) {
    // check for pagebreak
    if (($dom[$key]['attribute']['pagebreak'] == 'true') OR ($dom[$key]['attribute']['pagebreak'] == 'left') OR ($dom[$key]['attribute']['pagebreak'] == 'right')) {
        // add a page (or trig AcceptPageBreak() for multicolumn mode)
        $this->checkPageBreak($this->PageBreakTrigger + 1);
    }
    if ((($dom[$key]['attribute']['pagebreak'] == 'left') AND (((!$this->rtl) AND (($this->page % 2) == 0)) OR (($this->rtl) AND (($this->page % 2) != 0))))
            OR (($dom[$key]['attribute']['pagebreak'] == 'right') AND (((!$this->rtl) AND (($this->page % 2) != 0)) OR (($this->rtl) AND (($this->page % 2) == 0))))) {
        // add a page (or trig AcceptPageBreak() for multicolumn mode)
        $this->checkPageBreak($this->PageBreakTrigger + 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 辉煌 - 伟大的工作 - 很好的代码! (6认同)
  • 我在这里使用TCPDF 6.2.11和<br pagebreak="true"/>"开箱即用" - 无需修改代码. (6认同)

mer*_*aus 17

您可以将TCPDF的AddPage()方法与explode()和合适的分隔符结合使用:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8',
                 false);

// TCPDF initialization code (...)

$delimiter = '<h1>';
$html      = file_get_contents('./test.html');
$chunks    = explode($delimiter, $html);
$cnt       = count($chunks);

for ($i = 0; $i < $cnt; $i++) {
    $pdf->writeHTML($delimiter . $chunks[$i], true, 0, true, 0);

    if ($i < $cnt - 1) {
        $pdf->AddPage();
    }
}

// Reset pointer to the last page
$pdf->lastPage();

// Close and output PDF document
$pdf->Output('test.pdf', 'I');
Run Code Online (Sandbox Code Playgroud)


jaz*_*kat 11

我试过用

<br pagebreak="true" />
Run Code Online (Sandbox Code Playgroud)

要么

<tcpdf method="AddPage" />
Run Code Online (Sandbox Code Playgroud)

他们每个都没有在页面顶部开始新的页面,而是在HTML文本之间添加完整的A4页空白空间.因此,如果文本在页面中间结束,然后插入了分页符,则新文本将从下一页的中间写入.我不想要的.

有用的是(在TCPDF强制新页面中找到它):

$pdf->writeHTML($content, true, 0, true, 0);

$pdf->AddPage();
$pdf->setPage($pdf->getPage());  
Run Code Online (Sandbox Code Playgroud)

现在开始在页面顶部写入文本.


小智 8

TCPDF支持HTML标记和CSS属性'page-break-before'和'page-break-after'的'pagebreak'属性.例如,您可以使用<br pagebreak="true" />.

查看官方http://www.tcpdf.org网站和论坛以获取更多信息.


小智 8

对于2011-12-23版本5.9.142,我们可以使用page-break-before, page-break-insidecss属性,如下所示:

<div style="page-break-inside:avoid;">
some non breakable text
</div>
Run Code Online (Sandbox Code Playgroud)


Thi*_*der 5

对于分页 TCPDF 库仍然有相同问题的人

您可以使用<div style="page-break-before:always"></div>OR<br pagebreak="true"/> 在 HTML 内容中手动分页。

用于$tcpdf->AddPage()在代码中手动分页。

设置时SetAutoPageBreak(TRUE, 10);意味着:当文档高度达到(底部 - 10)时,将光标移动到新页面。所以如果你想有更多的空间,只需将数字减少到 0。它会一直绘制到文档的末尾,底部没有任何边距。

请记住,TCPDF 只接受标签属性的双引号 (")。不要对您的标签使用单引号 (')。

<div style='page-break-before:always'=>

<div style="page-break-before:always"=> RIGHT

因为这个问题,我需要 8 个小时:(