mPDF 中动态生成页面的页码
Posted
技术标签:
【中文标题】mPDF 中动态生成页面的页码【英文标题】:Page number for dynamically generated pages in mPDF 【发布时间】:2016-02-13 07:58:06 【问题描述】:我正在使用 mPDF 和 Codeigniter 来创建 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");
【问题讨论】:
向我们展示您用于生成多重 pdf 的代码 我已经添加了代码。 能否请您也添加指向该基本示例的链接? 链接是什么意思?? 在你写的最后一句话中,我使用了这个操作的基本例子。有很多关于 mPDF 的例子。分享你这个例子的链接 【参考方案1】:我不知道当前代码应该是什么样子,因为我对 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 *** question 这里还有不错的 domPdf debug helper page 希望这个回答能帮到你
【讨论】:
以上是关于mPDF 中动态生成页面的页码的主要内容,如果未能解决你的问题,请参考以下文章
MPDF PAGENO在codeigniter中无法在pdf中显示页码