DefHTMLHeaderByName, похоже, не работает mpdf - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь получить документ, созданный на сайте php.Это все работает хорошо, но последнее, что нужно сделать, это добавить заголовок вверху каждой страницы после титульного листа.Я перепробовал так много всего, и ближе всего к тому, что я хочу, это следующий (урезанный) код.

  ob_start();

  $mpdf = new Mpdf();

  $mpdf->SetDisplayMode('fullpage');
  $mpdf->bleedMargin = 0;
  $mdpf->crossMarkMargin = 0;
  $mpdf->cropMarkMargin = 0;
  $mpdf->nonPrintMargin = 0;
  // Home page and headers...
  $html_header = 'Some Code here';
  $mpdf->DefHTMLHeaderByName('PgHeader', $html_header);

  $mpdf->AddPage();
  $mpdf->Image('cover.jpg', 0, 0, 210, 297, 'jpg', '', true, false);


    // Get the content of any pages we have 
    if($pdf_pages) {
      foreach($pdf_pages as $key=>$pg) {
        $mpdf->AddPageByArray(array(
          'mgt' => '40',
          'odd-header-name' => 'PgHeader'
        ));
        $html .= 'the content from the loop';

          // Write some HTML code:
          $custom_sheet = file_get_contents('/custom.css');

          $mpdf->WriteHTML($custom_sheet, 1);
          $mpdf->WriteHTML($html, 2);
      }
    }

  // Output a PDF file directly to the browser
  $mpdf->Output('Name.pdf', 'I');

  ob_end_flush();

Я попытался изменить имя нечетного заголовка на html_PgHeader на основе документации, но в любом случае я получаю поле, весь контент, но заголовок никогда не показывается.Зачем?Почему он не назначен, поэтому я могу вызвать его в AddPageByArray?

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

Попробуйте что-то вроде этого

@page {
 header: header_name;
 footer: footer_name;
}

Это может помочь вам.

URL: https://mpdf.github.io/headers-footers/headers-footers.html

0 голосов
/ 19 июля 2018

В соответствии с документацией вам необходимо добавить префикс имени верхнего / нижнего колонтитула к ' html_ '

Попробуйте изменить;

'odd-header-name' => 'PgHeader',

на;

'odd-header-name' => 'html_PgHeader',

ссылка здесь

0 голосов
/ 11 июня 2018

Чтобы отобразить заголовок, вам необходимо добавить опцию odd-header-value к методу AddPageByArray со значением 1.

  ob_start();

  $mpdf = new Mpdf();

  $mpdf->SetDisplayMode('fullpage');
  $mpdf->bleedMargin = 0;
  $mdpf->crossMarkMargin = 0;
  $mpdf->cropMarkMargin = 0;
  $mpdf->nonPrintMargin = 0;
  // Home page and headers...
  $html_header = 'Some Code here';
  $mpdf->DefHTMLHeaderByName('PgHeader', $html_header);

  $mpdf->AddPage();
  $mpdf->Image('cover.jpg', 0, 0, 210, 297, 'jpg', '', true, false);

  $pdf_pages = array('key' => 'val');

    // Get the content of any pages we have 
    if($pdf_pages) {
      foreach($pdf_pages as $key=>$pg) {
        $mpdf->AddPageByArray(array(
          'mgt' => '40',
          'odd-header-name' => 'PgHeader',
          'odd-header-value' => 1,
        ));
        $html .= 'the content from the loop';

          // Write some HTML code:
          $custom_sheet = file_get_contents('/custom.css');

          $mpdf->WriteHTML($custom_sheet, 1);
          $mpdf->WriteHTML($html, 2);
      }
    }

  // Output a PDF file directly to the browser
  $mpdf->Output('Name.pdf', 'I');

  ob_end_flush();

Pt.II

Если это не помогло, попробуйте следующий сценарий:

  1. Откройте консоль и перейдите к корневому пути сайта.
  2. Создайте файл index.php
  3. Выполните composer require mpdf/mpdf (установите composer, если у вас его нет).
  4. Вставьте этот код в index.php

<?php
require_once __DIR__ . '/vendor/autoload.php';

ob_start();
$mpdf = new \Mpdf\Mpdf();


/** same code from previous example here, except Mpdf init **/
...