使用mPDF设置PDF封面与尾页时尾页空白的问题求助
解决mPDF中尾页PDF模板显示空白的问题
我看了你的代码,问题出在尾页模板的应用时机和方法上。SetPageTemplate()更适合设置全局背景模板(比如所有后续页面都用同一个模板),但你要做的是给单独的尾页应用模板,这时候应该用UseTemplate(),同时还要调整操作顺序——得先创建页面,再把模板套上去。
给你修正后的代码,关键修改点我都标出来了:
$mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => 'A4']); $mpdf->SetDisplayMode('fullpage'); $mpdf->enableImports = true; $mpdf->debug = true; $mpdf->SetImportUse(); // 处理封面:先加页面,再套模板 $coverSource = $mpdf->SetSourceFile('site/themes/raven/pdf/cover-page.pdf'); $coverTplId = $mpdf->ImportPage(1); // 明确导入封面PDF的第1页(假设是单页) $mpdf->AddPage(); $mpdf->UseTemplate($coverTplId); // 把模板应用到当前新建的页面 // 添加中间HTML内容页面 $html = (string) get_content("/print-menu"); $mpdf->AddPage(); $mpdf->WriteHTML($html); // 处理尾页:和封面逻辑一致,先加页面再套模板 $lastSource = $mpdf->SetSourceFile('site/themes/raven/pdf/last-page.pdf'); $lastTplId = $mpdf->ImportPage(1); // 导入尾页PDF的第1页 $mpdf->AddPage(); $mpdf->UseTemplate($lastTplId); // 把尾页模板绑定到当前页面 $mpdf->Output();
为什么原来的代码尾页会空白?
- 顺序搞反了:你原来先调用
SetPageTemplate(),再AddPage(),但SetPageTemplate()是给之后创建的页面设置全局模板,而你没有把导入的模板实际渲染到页面上;正确顺序是先创建页面,再用UseTemplate()把模板内容画到当前页面。 - 用错了方法:
SetPageTemplate()是全局模板,单页的封面/尾页应该用UseTemplate(),它专门用来把导入的PDF页面作为当前页面的内容或背景。
额外检查点
- 确认
site/themes/raven/pdf/last-page.pdf路径正确,文件没有损坏(直接打开看看能不能正常显示); - 如果你的尾页PDF是多页,需要循环导入每一页,重复
AddPage()+UseTemplate()的操作; - 确保mPDF版本支持
UseTemplate()(新版本都没问题,老版本可以查下文档)。
内容的提问来源于stack exchange,提问作者knackdig
相关产品推荐
相关产品推荐

