mPDF中动态生成页面的页码

时间:2016-02-13 07:58:06

标签: php codeigniter mpdf codeigniter-3

我正在使用带有Codeigniter的mPDF来创建PDF文件。添加页码时遇到问题。 我有一些通过数据库查询生成的结果集,我将它们传递给我的html文件以显示该数据。根据它创建的结果数量并转换为具有页数的pdf格式。问题是我生成多个页面时无法添加页码。 我正在使用此操作的基本示例。 请帮帮我!

我的控制器代码

$result_1 = $this->Vessel_model->getManifestVesselDetails($vesselId,$containerId);
$result_2 = $this->Vessel_model->getVesselDetailsByContainer($vesselId,$containerId);
$result_3 = $this->Vessel_model->getDDByVesselContainer($vesselId,$containerId);

$data['agentDetails'] = $this->Vessel_model->getShippingAgents();        
$data['DD_SDNumber'] = $this->DD_SDNumber;
$data['DDdetails'] = $result_3;
$data['containerDetails'] = $result_2;
$data['vesselcontainerDetails'] = $result_1;

$html = $this->load->view('reports/tri_shipping_manifest_PDF', $data, true);
//this the the PDF filename that user will get to download
$pdfFilePath = APPPATH.'/'.date('Y-m-d').$result_1->vessel.'-'.$result_1->serialno.".pdf";
$pdfFilePath3 = date('Y-m-d').$result_1->vessel.'-'.$result_1->serialno.".pdf";

$this->load->library('pdfreports');
$this->pdf = $this->pdfreports->load();
//$this->pdf->setFooter('{PAGENO}');
$this->pdf->AddPage('L','',1,'i','on'); 
$this->pdf->WriteHTML($html,0);
$this->pdf->Output($pdfFilePath3, "D");
$this->pdf->Output($pdfFilePath, "F");

1 个答案:

答案 0 :(得分:0)

我不知道当前代码应该是什么样子,因为我对mPDF知之甚少,但我建议你将domPdf与Codeigniter一起使用,因为这比这个库简单得多。 您可以找到domPdf here

由于我们不知道这些变量的输出是什么以及应该用pdf打印什么,我只能建议使用domPdf创建的一些代码

创建帮手:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
    function pdf_create($html, $filename='', $stream=TRUE){
      require_once("dompdf/dompdf_config.inc.php");         
      $dompdf = new DOMPDF();
      $dompdf->load_html($html);
      $dompdf->render();
      $dompdf->set_paper("A4");
      if ($stream) {
        $dompdf->stream($filename.".pdf",1);
      } else {
        return $dompdf->output();
      }
    }
?>

为pdf创建控制器

<?php
  $data['store']=$res;  
  $this->load->helper(array('dompdf', 'file'));
  $html = $this->load->view('store/sales_pdf', $data, true);
  $html.= $this->load->view('footer');
  $filename="salesbill".$id;
  pdf_create($html, $filename);
  $data = pdf_create($html, '', false);
  write_file('name', $data); 
?>

您的pdf HTML看起来像这样

<html>
  <head>
   <style>
     @page { margin: 180px 50px; }
     #header { position: fixed; left: 0px; top: -180px; right: 0px; height: 150px; background-color: orange; text-align: center; }
     #footer { position: fixed; left: 0px; bottom: -180px; right: 0px; height: 150px; background-color: lightblue; }
     #footer .page:after { content: counter(page, upper-roman); }
   </style>
  <body>
   <div id="header">
     <h1>Widgets Express</h1>
   </div>
   <div id="footer">
     <p class="page">Page <?php $PAGE_NUM ?></p>
   </div>
   <div id="content">
     <p>the first page</p>
     <p style="page-break-before: always;">the second page</p>
   </div>
 </body>
 </html>

此答案基于this stackoverflow question 这里还有很好的domPdf debug helper page 我希望这个答案可以帮助你