如何在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
相关产品推荐
相关产品推荐

