首页 > 解决方案 > html表在一定数量的db处中断

问题描述

我正在使用 CodeIgniter 使用 mpdf 生成 pdf。我尝试在 html 中以 7 的计数打破表格,同时在 mpdf 中生成 pdf,但我的代码不起作用。

我的控制器:

$htmlheader = $this->load->view('sales/header1', $data, true);
                $htmlheader1 = $this->load->view('sales/header2', $data, true);
                $htmlfooter1 = $this->load->view('sales/footer1', $data, true);
                $data['htmlheader'] = $this->load->view('sales/header1', $data, true);
                $html = $this->load->view('sales/invoice_pdf8', $data, true);
                $data['html'] = $this->load->view('sales/invoice_pdf8', $data, true);

                $header1 =$htmlheader.$htmlheader1 ;
                $data['header1'] =$htmlheader.$htmlheader1 ;
                $stylesheet = file_get_contents(FCPATH.'assets/css/invoice.css');
                $data['stylesheet'] = file_get_contents(FCPATH.'assets/css/invoice.css');
             
                $pdf->WriteHTML($stylesheet,1);
                $pdf->SetHeader($header1);
                      $pdf->setFooter($htmlfooter1);

              
               $pdf->AddPage();
                $pdf->SetHeader($htmlheader);
                $pdf->WriteHTML($html,2);

if($type=='print'){
        $pdf->SetJS('this.print();');
}else{
        $pdf->Output($filename, 'D');
}


$pdf->Output();

我的分贝数是 28

我的查看页面

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <!-- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">-->

</head>

<body>
    <div class="invoice-box">

            <table border="" class="" style=" border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse; ">
                <tr class="heading" style="background-color: #b3b3b3; margin-top: auto; margin-bottom: auto; ">
                    <small>
                    <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;" width="5%">#</td>
                    <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;" width="32%"> Material Description </td>
                    <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;" width="17%"> HSN Code</td>
                    <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;" width="7%"><?= lang('qty') ?></td>
                    <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;" width="7%">Unit</td>
                    <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;" width="14%">Unit Price</td>
                    <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;" width="18%"><?= lang('total') ?></td>
                    </small>
                </tr>
                <?php $i=1 ; foreach ($order_details as $item){?>
                <tr class="" style="font-size: 10px !important; margin-right: 0; border-bottom:1px solid #000; border-left:1px solid #000; border-top:1px solid #000;   border-collapse: collapse;">

                    <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;">
                        <?= $i ?>

                    </td>
                    <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;">
                        <?php
                                $productsize= $this->db->get_where('product',array('id'=>$item->product_id))->row('product_size');
                            ?>
                            <?= $item->product_name."-&nbsp;". $productsize ?>&nbsp;&nbsp;<small><?=  $item->description ?></small>
                    </td>
                    <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;">
                        <?php
                         $id =$item->product_id;
                         $hsncode = $this->db->get_where('product',array('id'=>$id))->row('hsncode');
                        echo $hsncode;
                        ?>

                    </td>
                    <?php
                        $cqty = $item->qty;
                        $returnqty = $item->return_qty;
                         $qty = $cqty-$returnqty;
                       // echo $item->qty
                        ?>
                        <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;">
                            <?= $qty ?>
                        </td>
                        <td style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;">
                            <?php $productid= $item->product_id; $unitcode = $this->sales->unitcodes($productid); echo $unitcode;  ?>
                        </td>
                        <td align="right" style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;">
                            <?= "&#x20B9;".' '.$this->localization->currencyFormat($item->sales_cost) ?>
                        </td>
                        <td align="right" style="border: 1px solid #000; border-bottom:1px solid #000; border-left:1px solid #000; border-right:1px solid #000; border-top:1px solid #000;  border-collapse: collapse;">
                            <?= "&#x20B9;".' '.$this->localization->currencyFormat($item->sales_cost * $qty) ?>
                        </td>

                        <?php
                         if($i % 7 == 0){
                         ?>
                            <div style="page-break-after:always; clear: both; display: block;">
                                <!-- <pagebreak /> -->
                            </div>
                            <?php
                         } ?>
                </tr>
                <?php $i++; } ?>

            </table>
   </div>
</body>
</html>

html tr 和 td 中的分页符不起作用我曾尝试过 page-break-inside:avoid 但 pdf 缩小为发票中 80 个产品的单页

所以我尝试了 page-break-after 和 page-break-before 但表格行已经被打破了

标签: html

解决方案


推荐阅读