我想使用 mpdf 在 PDF 中设置页眉和页脚

Posted

技术标签:

【中文标题】我想使用 mpdf 在 PDF 中设置页眉和页脚【英文标题】:I want to set header and footer in PDF using mpdf 【发布时间】:2016-06-29 09:28:38 【问题描述】:

我在 CodeIgniter 中使用 mpdf 库生成了一个 PDF。我想以适当的边距附加页眉图像和页脚图像,我创建了一个代码,但页眉和页脚重叠了。

//controller
$this->load->library('m_pdf');
    $param = '"","A4","","",0,0,100,0,6,3,"L"';
    $pdf = $this->m_pdf->load($param);
    // $pdf->useOddEven = true;

    $pdf->SethtmlHeader('<img src="' . base_url() . 'custom/Hederinvoice.jpg"/>');

    $pdf->SetHTMLFooter('<img src="' . base_url() . 'custom/footarinvoice.jpg"/>');
    $wm = base_url() . 'custom/Watermark.jpg';
    $pdf->SetWatermarkImage($wm);
    $pdf->showWatermarkImage = true;
      $data['main_content'] = 'dwnld';
    $this->load->view('template', $data);
    $html = $this->load->view('template_pdf', $data, true);
    $this->load->view('template_pdf', $data, true);
    $pdf->WriteHTML($html);
    $pdf->page = 0;
    $pdf->state = 0;
    $pdf->Output($pdfFilePath, "D");

【问题讨论】:

设置页眉边距、页脚边距为正值并尝试 嗨 vigikaran 我已经添加了这个样式@page :content margin-top: 3cm;下边距:4cm;标头:html_myHeader; 但没有效果 【参考方案1】:
 $pdf->SetHTMLHeader('<img src="' . base_url() . 'custom/Hederinvoice.jpg"/>');

    $pdf->SetHTMLFooter('<img src="' . base_url() . 'custom/footarinvoice.jpg"/>');
    $wm = base_url() . 'custom/Watermark.png';

      $data['main_content'] = 'dwnld';
    //$this->load->view('template', $data);
    $html = $this->load->view('template_pdf', $data, true);
    $this->load->view('template_pdf', $data, true);
    $pdf->AddPage('', // L - landscape, P - portrait 
        '', '', '', '',
        5, // margin_left
        5, // margin right
       60, // margin top
       30, // margin bottom
        0, // margin header
        0); // margin footer
    $pdf->WriteHTML($html);

    $pdf->Output($pdfFilePath, "D");

添加页面用于在 mpdf 中创建页面并传递边距顶部,底部的参数然后我们得到正确的输出

【讨论】:

感谢 @saurabh 它为我工作 :$pdf->AddPage('', // L - 风景, P - 肖像 '', '', '', '', 5, // margin_left 5, // 右边距 60, // 上边距 30, // 下边距 0, // 边距标题 0); // 边距页脚【参考方案2】:

您可以为首页和其他页面设置自定义 HTMl 标题,如下所示: 只需在所有 html 内容之上添加以下 sn-p 即可。您可以使用 al html 上方的标签为其添加内联 CSS

              <htmlpageheader name="firstpage" style="display:none">
              <div style="text-align:center"><img src="'.'logo.png"/></div>
              </htmlpageheader><sethtmlpageheader name="firstpage" value="on" show-this-page="1" />
              <htmlpageheader name="otherpages" style="display:none">
              <div style="text-align:center">PAGENO</div>
              </htmlpageheader><sethtmlpageheader name="otherpages" value="off" />';

或者可以使用https://mpdf.github.io/headers-footers/headers-footers.html作为参考来使用HTML头功能

设置页脚可以使用:

// Footer Configuration for all pages, can be changed for odd and even pages accordingly
$oddEvenConfiguration = 
            [
                'L' => [ // L for Left part of the header
                'content' => 'Your Content',
                'font-size' => 10,
                'font-family' => 'sans-serif',
                'color'=>'#000000'
                ],
                'C' => [ // C for Center part of the header
                'content' => '',
                ],
                'R' => [
                    'content' => 'PAGENO',
                ],
                'line' => 0, // That's the relevant parameter to remove line style in footer
            ];

$headerFooterConfiguration = [
    'odd' => $oddEvenConfiguration,
    'even' => $oddEvenConfiguration
];

【讨论】:

以上是关于我想使用 mpdf 在 PDF 中设置页眉和页脚的主要内容,如果未能解决你的问题,请参考以下文章

如何在Excel中设置页眉和页脚

如何在 mPDF 中使用引导程序?

mPDF 不在新页面上添加页眉/页脚

在无头打印到 PDF 中禁用 Chrome 的默认页眉和页脚

python使用fpdf生成pdf文件并添加页眉和页脚

从打印页面禁用浏览器特定的页眉和页脚