如何使用mpdf将文本垂直居中



如何在mpdf中的单个页面上垂直和水平居中文本

(我知道答案,stackoverflow只是让我写一个更长的问题,以便在这里发布我的答案…(

虽然mpdf支持一些css,但允许您通过css居中的一些东西不起作用:

  • display: flex不工作
  • <table>height: 100%不工作
  • <div style="position: absolute; top: 50%; left: 50%;"></div>不工作

但是,我确实发现了一个技巧:$mpdf->hPt$mpdf->wPt返回以点为单位的页面维度
这意味着您可以使用带有height: {$mpdf->hPt}pt; vertical-align: middle; text-align: center;:的表格单元格

$mpdf = new MpdfMpdf($options);
$h = $mpdf->hPt;
$w = $mpdf->wPt;
$html = <<<HTML
<html>
<body style="margin: 0; padding: 0;">
<table style="width: {$w}pt; margin: 0; padding: 0;" cellpadding="0" cellspacing="0">
<tr>
<td style="height: {$h}pt; text-align: center; vertical-align: middle; padding: 0px 5px; margin: 0;">
Hello World
</td>
</tr>
</table>
</body>
</html>
HTML;
$mpdf->WriteHTML($html);

显然,使用dpi自己计算该值是一种选择,但使用mpdfs计算可以确保对边缘情况进行相同的舍入和处理。

最新更新