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

如何在PHP中使用TCPDF实现每页显示12个二维码?

解决PDF每页精准显示12个二维码的问题

你的代码缺少分页判断逻辑,仅处理了换行但未检查是否需要新建页面,导致第一页之后无法控制每页固定显示12个二维码。以下是修正后的代码:

$pdf->SetFont('helvetica', '', 11);

$style = array(
    'border' => 2,
    'vpadding' => 'auto',
    'hpadding' => 'auto',
    'fgcolor' => array(0,0,0),
    'bgcolor' => false, 
    'module_width' => 1, 
    'module_height' => 1 
);

$x = 20; 
$y = 30; 
$size = 50;
$qrcodePerPage = 12; // 每页固定显示12个二维码
$count = 0; // 已生成二维码计数器
$columns = 4; // 每行显示4个,3行刚好12个
$pdf->AddPage();

foreach($results as $row){    
    $data =  "http://localhost/test/index.php?hashcode=".$row->hashcode;
    $pdf->write2DBarcode($data, 'QRCODE,L', $x, $y, $size, $size, $style, 'N');
    
    $count++;
    $x += $size + 10; 
    // 换行判断:达到每行列数时重置x坐标,下移y坐标
    if ($count % $columns == 0) { 
        $x = 20; 
        $y += $size + 10; 
    }
    // 分页判断:达到每页数量时新建页面,重置坐标和计数器
    if ($count % $qrcodePerPage == 0) {
        $pdf->AddPage();
        $x = 20;
        $y = 30;
    }
}

ob_end_clean();
$pdf->Output('example_050.pdf', 'I');

关键修改说明:

  • 新增$qrcodePerPage变量固定每页12个,$columns控制每行显示4个(3行×4列刚好12个)
  • 用$count计数器跟踪已生成的二维码数量
  • 每次生成后判断是否需要换行(按每行列数),以及是否需要新建页面(按每页总数)
  • 新建页面时重置坐标,确保新页面从初始位置开始生成

如果需要调整布局(比如改成3列4行),只需修改$columns为3,同时调整x的换行判断逻辑即可。

内容的提问来源于stack exchange,提问作者Mir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:05:54