在 mPDF 中生成 PDF 文档时,我们常常希望两个 div 能够左右并排形成两列网格布局。由于 mPDF 基于旧版 HTML/CSS 渲染引擎,它并不支持 flex 与 grid 等现代布局方式,但通过 float、inline-block 或表格仍能实现类似效果。

使用 float 实现两列并排
最直观的方式是给两个块级元素设置固定宽度,并使用 CSS 的 float 属性。mPDF 对 float 支持较好,只要父容器宽度足够即可。
<style>
.col { width: 48%; }
.left { float: left; }
.right { float: right; }
</style>
<div class="col left">左侧内容</div>
<div class="col right">右侧内容</div>
<div style="clear:both;"></div>上面代码中,两个 div 宽度各占 48%,分别向左和向右浮动,从而并排显示。最后的 clear 元素用于结束浮动,避免影响后续内容。
使用 display:inline-block 方式
如果不想处理浮动塌陷,也可以用 display:inline-block 让 div 变成行内块元素。注意 mPDF 中元素间空白可能引发间隙,可设置 font-size:0 来消除。
<style>
.wrap { font-size: 0; }
.col { display: inline-block; width: 50%; font-size: 12px; vertical-align: top; }
</style>
<div class="wrap">
<div class="col">第一列</div>
<div class="col">第二列</div>
</div>使用表格作为稳妥替代
当布局较复杂时,直接用 table 标签反而最可靠。mPDF 对表格支持非常完善,下列代码可确保两列严格并排:
<table width="100%">
<tr>
<td width="50%">左侧单元格</td>
<td width="50%">右侧单元格</td>
</tr>
</table>PHP 中调用 mPDF 输出示例
以下为一段简单的 PHP 代码,将上面的 HTML 传给 mPDF 并生成 PDF 文件:
<?php
require_once __DIR__ . '/vendor/autoload.php';
$mpdf = new MpdfMpdf();
$html = '<div style="width:48%;float:left;">左列</div>'
. '<div style="width:48%;float:right;">右列</div>';
$mpdf->WriteHTML($html);
$mpdf->Output('two-col.pdf', 'I');
?>通过以上方法,你可以在 mPDF 中稳定地实现 div 并排的两列网格效果。若仅需简单排版,float 或 inline-block 足够;若追求兼容与精确,表格是更好的选择。