mPDF如何让WriteFixedPosHTML写入的固定HTML在所有页面显示
mPDF全页面固定位置内容实现方案
WriteFixedPosHTML 方法默认仅对调用时的当前活动页面生效,不会自动同步到所有生成页面,要实现固定HTML内容在所有PDF页展示,可选择以下两种经过验证的方案:
方案1:通过全局页眉/页脚注入(优先推荐)
mPDF的页眉、页脚机制原生支持在所有页面自动渲染,你可以把需要固定展示的内容写入全局页眉/页脚,内容支持绝对定位、文字旋转等所有HTML样式,完全可以匹配你之前的坐标设置。
示例代码:// 要固定展示的内容,用绝对定位匹配你之前的坐标参数:left=10mm、top=190mm、宽度3mm、溢出可见 $fixedHtml = '<div style="position: absolute; left: 10mm; top: 190mm; width: 3mm; overflow: visible;"> <table border="0"> <tr> <th text-rotate="90" style="font-family: Arial; font-weight: normal;">www.siteeee.com</th> </tr> </table> </div>'; // 设置为全局页脚(也可以用SetHTMLHeader设置为页眉,不影响固定定位效果) $mpdf->SetHTMLFooter($fixedHtml);该方案兼容mPDF 6.x及以上所有版本,渲染性能更好,不会出现页码错位、内容漏加载的问题。
方案2:注册页面生成事件回调
如果你必须使用WriteFixedPosHTML方法实现,可以注册页面生成事件,在每一页渲染完成前自动写入固定内容,适合需要针对不同页面动态调整固定内容的场景。
示例代码:// 注册页面生成回调,mPDF 7.0及以上版本支持事件机制 $mpdf->event->addListener( \Mpdf\Output\Event\PageGenerated::class, function() use ($mpdf) { $mpdf->WriteFixedPosHTML( '<table border="0"><tr><th text-rotate="90" style="font-family: Arial;font-weight: normal;">www.siteeee.com</th></tr></table>', 10, 190, 3, 0, 'visible' ); } );
注意:如果使用低版本mPDF(6.x及以下)不支持事件机制,直接使用方案1即可,不需要额外做兼容处理。
内容的提问来源于stack exchange,提问作者Tiago
相关产品推荐
相关产品推荐

