You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MPDF分页页眉修改及多副本页眉显示错误技术求助

解决mPDF分页后更改页眉的问题

我来帮你搞定这个mPDF分页后页眉显示错误的问题!首先,核心问题是你当前的代码没有利用mPDF的**节(Section)**功能来区分不同页面的页眉——mPDF默认会沿用前一页的页眉设置,所以要手动切换节并重置页眉。

问题分析

你需要第一页(或第一份内容)用默认页眉,而分页后的第二副本页面显示$title2作为页眉。要实现这个,我们需要在分页时创建新的节,并为新节设置独立的页眉。

解决方案代码示例

下面是修改后的完整代码,我会标注关键改动点:

<?php
include('mPDF/mpdf.php');

// 初始化mPDF,确保页眉区域的边距设置足够(你原来的参数已经包含了页眉边距,没问题)
$mpdf = new mPDF('c', 'A4', '9', '', '10', '18', '55', '50', '50', '12', 'P');

// 1. 设置第一页的页眉
$title1 = "第一页默认页眉"; // 替换成你第一页的实际页眉文本
$mpdf->SetHTMLHeader('<div style="text-align: center; font-weight: bold; font-size: 14px;">' . $title1 . '</div>');

$html = '<html><head></head><body>';
$pageContent = '';

// 生成第一页的内容(假设前40条是第一页内容)
for ($i = 1; $i < 40; $i++) {
    $pageContent .= '<div>Here is the content for item ' . $i . '</div>';
}

// 输出第一页内容
$html .= $pageContent;

// 2. 分页并切换到新节,设置第二副本的页眉
$html .= '<pagebreak section="1" />'; // 开启新节,这是切换页眉的关键
$title2 = "第二副本页眉"; // 你的目标页眉变量
$mpdf->SetHTMLHeader('<div style="text-align: center; font-weight: bold; font-size: 14px;">' . $title2 . '</div>', 'O'); 
// 第二个参数'O'表示奇数页,'E'表示偶数页,留空则应用到所有页

// 输出第二副本的内容(和第一页一样)
$html .= $pageContent;

// 继续生成剩余内容(如果有的话)
for ($i = 40; $i < 80; $i++) {
    $html .= '<div>Here is the content for item ' . $i . '</div>';
}

$html .= '</body></html>';

$mpdf->WriteHTML($html);
$mpdf->Output('document.pdf', 'I'); // 'I'表示在浏览器中打开,'D'是下载
?>

关键知识点

  • 节(Section)的作用:mPDF中每个节可以拥有独立的页眉、页脚、页码规则。用<pagebreak section="1">标签可以创建新节,新节的页眉不会继承前一节的设置。
  • SetHTMLHeader方法:第一个参数是页眉的HTML内容,第二个参数可以指定页眉应用的页面类型(奇数/偶数/所有),如果只需要给新节的所有页面设置,直接留空即可。
  • 手动控制分页:如果你的内容会自动分页,也可以在自动分页前通过PHP逻辑判断,提前设置新的页眉。比如检测当前页码,当页码变为2时重置页眉。

另一种实现方式(用AddPage方法)

如果你更习惯用PHP方法而非HTML标签控制分页,也可以这样写:

<?php
include('mPDF/mpdf.php');

$mpdf = new mPDF('c', 'A4', '9', '', '10', '18', '55', '50', '50', '12', 'P');

$title1 = "第一页页眉";
$title2 = "第二副本页眉";
$pageContent = '';

// 生成页面内容
for ($i = 1; $i < 40; $i++) {
    $pageContent .= '<div>Here is the content for item ' . $i . '</div>';
}

// 第一页
$mpdf->SetHTMLHeader('<div>' . $title1 . '</div>');
$mpdf->WriteHTML($pageContent);

// 添加新页面,设置新页眉
$mpdf->AddPage();
$mpdf->SetHTMLHeader('<div>' . $title2 . '</div>');
$mpdf->WriteHTML($pageContent);

// 剩余内容
$remainingContent = '';
for ($i = 40; $i < 80; $i++) {
    $remainingContent .= '<div>Here is the content for item ' . $i . '</div>';
}
$mpdf->WriteHTML($remainingContent);

$mpdf->Output('document.pdf', 'I');
?>

内容的提问来源于stack exchange,提问作者YUNOOS PARVEZ ANSARI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:35:12