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

求助:如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:11:10