PHP使用mPDF向现有PDF文档写入多个不同坐标文本的实现问题
mPDF向PDF添加多坐标文本的调整方案
你只需要在导入模板页后,重复执行「设置坐标→写入文本」的逻辑即可,推荐用配置数组批量管理所有待写入的文本,代码更易维护:
<?php /* pdf_creator.php */ $county = $_POST['county']; // 可补充其他要写入的变量,比如从POST取的其他业务字段 $address = $_POST['address'] ?? ''; $record_date = $_POST['record_date'] ?? ''; require_once __DIR__ . '/vendor/autoload.php'; $pdf = new mPDF(); $pdf->SetImportUse(); $pdf->SetSourceFile('document.pdf'); $tplId = $pdf->ImportPage(1); $pdf->UseTemplate($tplId); // 定义所有待写入的文本配置:格式为 [文本内容, X坐标, Y坐标] $text_list = [ [$county, 10, 17.5], // 原有第一个文本 [$address, 10, 30], // 第二个文本,可自定义坐标 [$record_date, 150, 17.5], // 第三个文本,可自定义坐标 // 继续添加更多你需要的文本和对应坐标即可 ]; // 循环批量写入所有文本 foreach ($text_list as $item) { $pdf->SetX($item[1]); $pdf->SetY($item[2]); $pdf->WriteHTML($item[0]); } // 如果需要给不同文本设置不同样式,比如字体、颜色,可以用带样式的配置方案: /* // 带样式的配置数组示例 $text_list = [ [ 'content' => $county, 'x' => 10, 'y' => 17.5, 'font_size' => 14, 'color' => [255,0,0] // 红色 ], [ 'content' => $address, 'x' => 10, 'y' => 30, 'font_size' => 12, 'color' => [0,0,0] // 黑色 ] ]; // 对应循环逻辑 foreach ($text_list as $item) { $pdf->SetFont('','', $item['font_size']); $pdf->SetTextColor($item['color'][0], $item['color'][1], $item['color'][2]); $pdf->SetX($item['x']); $pdf->SetY($item['y']); $pdf->WriteHTML($item['content']); } */ $pdf->Output('newdocument.pdf'); header('Location: newdocument.pdf');
注意事项
- mPDF默认坐标单位为毫米,你可以根据实际渲染效果调整X、Y的数值
- 如果是纯文本内容不需要HTML格式,也可以用
$pdf->WriteText($x, $y, $text)方法,无需单独调用SetX和SetY,写法更简便 - 如果要给多页PDF加文本,只需要循环导入对应页码、调用UseTemplate后,写入该页对应的文本即可
内容的提问来源于stack exchange,提问作者mineagain fettt
相关产品推荐
相关产品推荐

