求助:如何在CodeIgniter中用FPDF实现PDF每页固定10行?
嘿,我来帮你搞定这个每页固定显示10行的需求!
你现在的问题是代码只是一次性循环输出所有数据库记录,没有控制每页的行数上限。要实现每页10条数据,只需要加个计数器跟踪当前页面的行数,达到阈值就新建页面,同时别忘了给每页加上表头(可读性会好很多哦)。
直接给你修改好的视图代码,替换原来的PDF生成部分就行:
function viewdata($result){ if(isset($result)){ $rowCount = 0; // 先输出表头(可以根据自己的需求调整文字和样式) $this->SetFont('Arial','B',11); $this->Cell(60,10,'Vendor Name',1,0,'L'); $this->Cell(90,10,'Address',1,0,'L'); $this->Cell(50,10,'Contact',1,0,'L'); $this->Cell(70,10,'Email',1,0,'L'); $this->ln(); foreach($result as $values){ $rowCount++; // 每输出10条数据就新建页面并重新打印表头 if($rowCount > 10){ $this->AddPage('L','A4',0); // 重新输出表头 $this->SetFont('Arial','B',11); $this->Cell(60,10,'Vendor Name',1,0,'L'); $this->Cell(90,10,'Address',1,0,'L'); $this->Cell(50,10,'Contact',1,0,'L'); $this->Cell(70,10,'Email',1,0,'L'); $this->ln(); $rowCount = 1; // 重置计数器,当前行是新页面的第1条数据 } $this->SetFont('Arial','',10.5); $this->Cell(60,10,$values['vndr_name'],1,0,'L'); $this->Cell(90,10,$values['vndr_address'].','.$values['state'].'-'.$values['vndr_pincode'],1,0,'L'); $this->Cell(50,10,$values['vndr_telephone'].','.$values['vndr_mobile'],1,0,'L'); $this->Cell(70,10,$values['vndr_mailid'],1,0,'L'); $this->ln(); } } } $this->pdf = new Printview(); $this->pdf->SetMargins(15, 10, 20); $this->pdf->AliasNbPages(); $this->pdf->AddPage('L','A4',0); $this->pdf->viewdata($result); $this->pdf->Output();
关键修改说明:
- 新增
$rowCount变量,用来统计当前页面已输出的数据行数 - 新增表头部分(加粗字体),确保每页都有清晰的列标题(如果不需要表头,可以直接删掉这部分,然后把判断条件改成
$rowCount == 10即可) - 循环中每输出一条数据计数器加1,当超过10时调用
AddPage()创建新页面,重新输出表头后重置计数器,让新页面从第1条数据开始计算 - 控制器代码完全不用修改,只需要替换视图里的PDF生成逻辑
额外提示:
- 确认你的
Printview类是正确继承FPDF的,否则AddPage()、Cell()这些方法会报错 - 测试时可以数一下每页的行数,确保正好是10条数据行
- 最后一页不足10条的话,代码会自动正常结束,不需要额外处理
内容的提问来源于stack exchange,提问作者itsme
相关产品推荐
相关产品推荐

