mPDF使用WriteText()方法写入文本时如何设置居中对齐
mPDF 写入文本居中实现方法
WriteText() 方法用于在指定固定X/Y坐标位置写入单行文本,本身没有内置对齐配置项,要实现文本居中效果可选择以下两种实现方式:
- 方式一:手动计算坐标适配
WriteText()(适用于必须使用该方法的场景)
核心逻辑是先获取当前字体样式下待写入文本的实际渲染宽度,结合页面正文可用宽度,计算出居中状态下对应的X轴坐标,替换原有固定X参数即可。
实现代码:<?php // 依赖引入、类初始化、新增页面、导入源PDF模板的原有代码无需修改 $content = "This is a text"; $yPos = 20; // 原有的Y轴坐标保持不变 // 计算页面正文区域可用宽度:页面总宽度减去左右页边距 $availableWidth = $pdf->w - $pdf->lMargin - $pdf->rMargin; // 获取文本在当前字体配置下的实际渲染宽度 $textWidth = $pdf->GetStringWidth($content); // 计算居中对应的X轴坐标 $xPos = $pdf->lMargin + ($availableWidth - $textWidth) / 2; // 写入居中后的文本 $pdf->WriteText($xPos, $yPos, $content); // 其余原有业务逻辑保持不变 ?> - 方式二:改用自带对齐能力的
WriteCell()方法(更推荐,支持多对齐规则)
如果没有强制使用WriteText()的要求,直接调用WriteCell()方法即可,该方法原生支持对齐参数,传入'C'即可实现居中,无需手动计算坐标,同时支持左对齐、右对齐、多行文本等场景。
实现代码:<?php // 依赖引入、类初始化、新增页面、导入源PDF模板的原有代码无需修改 $content = "This is a text"; $availableWidth = $pdf->w - $pdf->lMargin - $pdf->rMargin; // WriteCell参数顺序:单元格宽度、行高、文本内容、边框样式、换行位置、对齐方式、是否填充背景、关联链接 // 宽度传入正文可用宽度,对齐参数传'C'即可自动居中 $pdf->WriteCell($availableWidth, 10, $content, 0, 0, 'C'); // 其余原有业务逻辑保持不变 ?>
提示:如果你自定义了页面尺寸、页边距,或者导入的PDF模板有特殊排版边界,对应调整可用宽度的计算参数即可适配。
内容的提问来源于stack exchange,提问作者Vika
相关产品推荐
相关产品推荐

