mPDF 隐藏第一页和最后一页的标题

问题描述 投票:0回答:1

我使用以下代码在 PDF 的每一页上添加页眉和页脚:

global $pdf_footer;
global $pdf_header;

$mpdf->SetHTMLHeader('<img src="header.jpg"/>');
$mpdf->SetHTMLFooter('<img src="footer.jpg"/>');

这很好用,但我想从第一页和最后一页删除页眉和页脚。有什么建议么?谢谢!

php pdf mpdf
1个回答
0
投票

方法 1:使用 HTML 和 PHP(为简单起见,推荐)

您可以根据页码有条件地设置 PHP 中的页眉内容。 mPDF 提供了 {PAGENO} 和 {nbpg} 占位符,可分别用于确定当前页码和总页数。但是,您需要稍微自定义您的方法,因为这些占位符旨在直接在文档正文或页眉/页脚内容中使用,并且不直接支持显示内容的条件逻辑。

也就是说,您可以在 PHP 代码中实现逻辑,仅在满足某些条件时才添加标头(例如,不在第一页或最后一页上)。这是一个概念性示例:

<?php
    require_once __DIR__ . '/vendor/autoload.php';
    
    $mpdf = new \Mpdf\Mpdf();
    
    // Assume $html contains your main content
    
    // First page
    $mpdf->AddPage();
    $mpdf->WriteHTML($html);
    
    // Add header from the second page to the second-to-last page
    $mpdf->SetHeader('Your Header Content Here');
    for ($i = 2; $i < $totalPages; $i++) {
        $mpdf->AddPage();
        // Update $html or add different content per page as needed
        $mpdf->WriteHTML($html);
    }
    
    // Last page - without header
    $mpdf->SetHeader('');
    $mpdf->AddPage();
    $mpdf->WriteHTML($html);
    
    $mpdf->Output(); ?>

方法 2:使用条件逻辑自定义 HTML 标头

另一种方法是在 HTML 中嵌入 PHP(如果使用 PHP 生成 HTML 内容)或 JavaScript(不推荐,因为它依赖于客户端执行,这不适用于 mPDF)以有条件地呈现标头。由于 mPDF 在生成 PDF 时在服务器端执行 PHP,因此您不能在 PHP 条件中直接使用 {PAGENO} 或 {nb} 而不进行预处理或估计页码,这可能会很复杂且容易出错。

对于大多数用例,第一种方法更直接、更有效。它涉及在将每个页面添加到文档之前通过 PHP 逻辑控制标头内容。

请记住,mPDF 在生成 PDF 之前会处理传递给它的 HTML 和 PHP,因此与页码相关的任何动态逻辑都需要在服务器端使用 PHP 进行处理,然后再将最终内容传递给 mPDF 进行 PDF 生成。

如何使用 mPDF 有条件地隐藏第一页和最后一页上的标题

© www.soinside.com 2019 - 2024. All rights reserved.