Как сформировать отдельный хидер или футер для первой страницы в mPDF на примере Drupal

Когда вам нужно создать PDF-документ с использованием библиотеки mPDF, бывает необходимо сделать так, чтобы на первой странице отображался отдельный футер (или хидер), отличающийся от остальных страниц. В этом примере мы рассмотрим, как использовать селектор @page :first для задания различных футеров для первой страницы и всех остальных страниц в вашем документе. Этот подход будет полезен не только для проектов на Drupal, но и для любых других случаев, где используется mPDF.

Основы подхода: использование @page :first

Для начала, вам нужно настроить CSS стили для страницы и футеров. Примерно так это выглядит:

Для всех страниц (кроме первой) используется стандартный футер print-page-footer.

Для первой страницы мы устанавливаем особый футер print-page-footer-first.

Дополнительно для рендера в браузере (например, при просмотре на экране) мы скрываем общий футер, чтобы не отображать оба футера сразу.

HTML-шаблон (Twig)

Чтобы настроить рендеринг футеров, нужно воспользоваться специализированными тегами htmlpagefooter из mPDF. Для этого создадим два отдельных контейнера для футеров — один для всех страниц, второй только для первой.

Как видно, мы подключаем один и тот же подшаблон футера (page-foot.twig), но оборачиваем его в разные контейнеры htmlpagefooter. Первый футер будет использоваться для всех страниц, кроме первой, а второй — только для первой страницы. В подшаблон передается параметр isFirst, который определяет, какой контент отобразить.

Логика внутри подшаблона

Теперь давайте разберемся с логикой внутри самого подшаблона page-foot.twig, где вы можете задать условие на отображение различного контента в зависимости от значения флага isFirst.

Здесь мы используем проверку флага isFirst, чтобы определить, какой контент выводить в футере. Когда isFirst равен 1, выводится футер для первой страницы, иначе — стандартный футер.

    Мало букафф? Читайте есчо !

    Убираем вставку   в пустые div контейнеры в CKEditor 5

    Апрель 9, 2025 г.

    Неприятная особенность CKEditor - добавляет в пустые контейнера (в <div>,<p> и т.п.) html код неразрывного пробела. Покажу как можно от этого избавиться через код в кастомном плагине для CKEditor 5 в экосистеме Drupal 8+. Нам понадобится ...

    Читать

    Фильтр по годам во views

    Март 19, 2025 г.

    Задача проста - есть материалы, у которых есть поле даты (timestamp), нужно вывести кнопки фильтрующие список по годам. Дополнительно задача ...

    Читать

    VK Video: интегрируем как oembed provider source в Drupal

    Апрель 12, 2025 г.

    Еще один oembed провайдер, который мне понадобился не давно - VK VIDEO. Нужно было интегрировать видео с ВКонтакте в медиа библиотеку Drupal. Если ...

    Читать

    Форматирование дат в Twig на Drupal 10/11: date и format_date() с примерами

    Август 8, 2025 г.

    В Drupal 10/11 при работе с шаблонами Twig часто требуется вывести дату в нужном формате — будь то текущая дата, дата из поля сущности или timestamp. Для этого можно использовать стандартный Twig-фильтр date, а также функцию format_date(). В этой статье ...

    Читать
     

    Комментарии к «Как сформировать отдельный хидер или футер для первой страницы в mPDF на примере Drupal»

    Понравилась статья? Есть вопросы? - пишите в комментариях.



    Комментарий: