You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:45:02