来自 HTML 中的新页面 kartik\mpdf (Yii2)

Posted

技术标签:

【中文标题】来自 HTML 中的新页面 kartik\\mpdf (Yii2)【英文标题】:New page from HTML in kartik\mpdf (Yii2)来自 HTML 中的新页面 kartik\mpdf (Yii2) 【发布时间】:2016-06-01 10:38:04 【问题描述】:

我有问题。如何将新页面从 html 添加到 PDF?

马上我会说我不知道​​为什么,但解决方案如:

<pagebreak />

h1 page-break-before: always

不工作。

我的 php 代码:

$pdf = new Pdf([
    'mode' => Pdf::MODE_UTF8,
    'format' => Pdf::FORMAT_A4,
    'orientation' => Pdf::ORIENT_PORTRAIT,
    'destination' => Pdf::DEST_FILE,
    'filename' => $path,
    'content' => $content,
    'cssInline' => '.font_nextfont-family:DoodlePentableborder-collapse:collapse;width:100%tdborder:1px solid #000',
]);
return $pdf->render();

有没有人有这方面的经验可以帮助你?

【问题讨论】:

能否提供一个 HTML/PHP 代码示例? 当然。我把代码放在上面。 :) 【参考方案1】:

从docs 看来,您可以使用HTML 之类的:

<pagebreak />
or
<tocpagebreak />

PHP:

$mpdf->AddPage();
$mpdf->TOCpagebreak();

但是您已经说过您尝试了 html 并且无法正常工作。 Maybe you have a parent element with float?

【讨论】:

不,我没有设置浮动。 也不起作用。【参考方案2】:

好的,它可以工作。

我用这个方法:https://davidwalsh.name/css-page-breaks

在 HTML 中:

<div className="page-break"></div>

在 PHP 中:

$pdf = new Pdf([
    'mode' => Pdf::MODE_UTF8,
    'format' => Pdf::FORMAT_A4,
    'orientation' => Pdf::ORIENT_PORTRAIT,
    'destination' => Pdf::DEST_FILE,
    'filename' => $path,
    'content' => $content,
    'cssInline' => '
        @media all
            .font_nextfont-family:DoodlePentableborder-collapse:collapse;width:100%tdborder:1px solid #000.page-break display: none;
        
        @media print
            .page-breakdisplay: block;page-break-before: always;
        
    ',
]);
return $pdf->render();

【讨论】:

完美,它适用于 HTML:

以上是关于来自 HTML 中的新页面 kartik\mpdf (Yii2)的主要内容,如果未能解决你的问题,请参考以下文章

Yii2 - kartik-v/mpdf - 标题仅在第一页

如何在yii2中向kartik yii-mpdf添加自定义字体

Yii2 Kartik mdfp不显示水印

DJANGO 将 AJAX 请求中的新结果值渲染到 HTML 页面

Laravel 和 Datatables:Ajax 数据不使用来自 html 选择的新 ajax 参数刷新表

HTML 5的新标签