TCPDF中的手动分页符

TCPDF中的手动分页符,pdf,pdf-generation,tcpdf,page-break,Pdf,Pdf Generation,Tcpdf,Page Break,我正在使用TCPDF在我的一个项目中生成PDF。我只需创建一个HTML文件并将其交给TCPDF来处理PDF生成。但是现在我有了一些HTML,其中一个接一个地添加了多个证书,我希望在其中有一个分页符。分页符应由HTML决定,即我想知道HTML中是否有TCPDF理解的标识符,然后相应地在生成的PDF中添加分页符 我该怎么做呢?您可以将TCPDF的AddPage()方法与explode()和合适的分隔符结合使用: $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_U

我正在使用TCPDF在我的一个项目中生成PDF。我只需创建一个HTML文件并将其交给TCPDF来处理PDF生成。但是现在我有了一些HTML,其中一个接一个地添加了多个证书,我希望在其中有一个分页符。分页符应由HTML决定,即我想知道HTML中是否有TCPDF理解的标识符,然后相应地在生成的PDF中添加分页符

我该怎么做呢?

您可以将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');
$pdf=新的TCPDF(pdf页面方向、pdf单元、pdf页面格式、真“UTF-8”,
假);
//TCPDF初始化代码(…)
$delimiter='';
$html=file_get_contents('./test.html');
$chunks=explode($delimiter,$html);
$cnt=计数($chunks);
对于($i=0;$i<$cnt;$i++){
$pdf->writeHTML($delimiter.$chunks[$i],true,0,true,0);
如果($i<$cnt-1){
$pdf->AddPage();
}
}
//重置指向最后一页的指针
$pdf->lastPage();
//关闭并输出PDF文档
$pdf->Output('test.pdf','I');

您也可以按照此方法完成您的需求:

$htmlcontent1="CERTIFICATE NUMBER 1 IMAGE HERE";

// output the HTML content
$pdf->writeHTML($htmlcontent1, true, 0, true, 0);

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

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Print a table

// add a page
$pdf->AddPage();

$htmlcontent1="CERTIFICATE NUMBER 1 IMAGE HERE";

// output the HTML content
$pdf->writeHTML($htmlcontent1, true, 0, true, 0);
// reset pointer to the last page
$pdf->lastPage();

// ---------------------------------------------------------

//Close and output PDF document
$pdf->Output('textcertificate.pdf', 'D');
希望它能帮助某人:)


谢谢

我正在使用

查找方法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);
    }
}

TCPDF支持HTML标记的'pagebreak'属性和CSS属性'pagebreak before'和'pagebreak after'。 例如,您可以使用


查看官方网站和论坛了解更多信息。

对于2011-12-23版本的5.9.142,我们可以在
css属性中使用
分页符,如下所示:

<div style="page-break-inside:avoid;">
some non breakable text
</div>

一些不可破坏的文本
我尝试使用

<br pagebreak="true" />
现在从在页面顶部写入文本开始。

根据您的需要,您可以使用类似的内容

$html .= '<tcpdf method="AddPage" /><h2>Graphic Functions</h2>';
$html.='Graphic Functions';

您需要验证参数K_TCPDF_调用TCPDF配置文件中HTML中的_是否正确。

之后为元素提供
分页符,通过CSS的
pagebreak-before
pagebreak-inside
属性将在TCPDF运行时将属性
pagebreak
pagebreakafter
应用于html标记

// page-break-inside
if (isset($dom[$key]['style']['page-break-inside']) AND ($dom[$key]['style']['page-break-inside'] == 'avoid')) {
    $dom[$key]['attribute']['nobr'] = 'true';
}
// page-break-before
if (isset($dom[$key]['style']['page-break-before'])) {
    if ($dom[$key]['style']['page-break-before'] == 'always') {
        $dom[$key]['attribute']['pagebreak'] = 'true';
    } elseif ($dom[$key]['style']['page-break-before'] == 'left') {
        $dom[$key]['attribute']['pagebreak'] = 'left';
    } elseif ($dom[$key]['style']['page-break-before'] == 'right') {
        $dom[$key]['attribute']['pagebreak'] = 'right';
    }
}
// page-break-after
if (isset($dom[$key]['style']['page-break-after'])) {
    if ($dom[$key]['style']['page-break-after'] == 'always') {
        $dom[$key]['attribute']['pagebreakafter'] = 'true';
    } elseif ($dom[$key]['style']['page-break-after'] == 'left') {
        $dom[$key]['attribute']['pagebreakafter'] = 'left';
    } elseif ($dom[$key]['style']['page-break-after'] == 'right') {
        $dom[$key]['attribute']['pagebreakafter'] = 'right';
    }
}

对于仍然有相同问题的人来说,分页符TCPDF库

您可以使用

在HTML内容中手动断开页面

使用
$tcpdf->AddPage()
在代码中手动断开页面

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

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

右侧


因为这个问题,我花了8个小时:(

这是一个救命稻草,它真的为我节省了很多时间,对我来说也是如此!谢谢我正在使用TCPDF 6.2.11和
开箱即用“这里-无需修改代码。救生员:D谢谢!太好了!!!仍在使用6.2.25在TCPDF版本4.6.016中如何使用这个东西。因为我的项目太旧了,我无法更改TCPDF的版本。所以你有没有想法在TCPDF的旧版本“4.6.016”中使用这个属性“内部分页:避免”?谢谢你的提示!
$html .= '<tcpdf method="AddPage" /><h2>Graphic Functions</h2>';
// page-break-inside
if (isset($dom[$key]['style']['page-break-inside']) AND ($dom[$key]['style']['page-break-inside'] == 'avoid')) {
    $dom[$key]['attribute']['nobr'] = 'true';
}
// page-break-before
if (isset($dom[$key]['style']['page-break-before'])) {
    if ($dom[$key]['style']['page-break-before'] == 'always') {
        $dom[$key]['attribute']['pagebreak'] = 'true';
    } elseif ($dom[$key]['style']['page-break-before'] == 'left') {
        $dom[$key]['attribute']['pagebreak'] = 'left';
    } elseif ($dom[$key]['style']['page-break-before'] == 'right') {
        $dom[$key]['attribute']['pagebreak'] = 'right';
    }
}
// page-break-after
if (isset($dom[$key]['style']['page-break-after'])) {
    if ($dom[$key]['style']['page-break-after'] == 'always') {
        $dom[$key]['attribute']['pagebreakafter'] = 'true';
    } elseif ($dom[$key]['style']['page-break-after'] == 'left') {
        $dom[$key]['attribute']['pagebreakafter'] = 'left';
    } elseif ($dom[$key]['style']['page-break-after'] == 'right') {
        $dom[$key]['attribute']['pagebreakafter'] = 'right';
    }
}