我正在使用带有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");
答案 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 我希望这个答案可以帮助你