Динамические заголовки HTML mpdf не отображаются после автоматических разрывов страниц

У меня есть динамически сгенерированный отчет в формате PDF с использованием mpdf с заголовками HTML, которые динамически изменяются по всему документу. Это работает для всех страниц, где я вручную вставляю разрыв страницы и устанавливаю новые заголовки, но там, где разрыв страницы вызван переполнением страницы содержимым, заголовки не отображаются, и у меня остается пустое пространство.

Я использую теги html для установки заголовков при их обновлении:

<sethtmlpageheader name="page_header_<?=$profile_name ?>" value="on" show-this-page="1" />

Я пытался изменить это (например, добавив атрибут page="all"), но это только усугубляет проблему, а не улучшает, на самом деле большинство возможных решений, которые я пробовал, вызвали больше проблем, чем исправили.


person urchino    schedule 06.09.2013    source источник
comment
Удалось ли вам найти решение для этого?   -  person Saad    schedule 29.09.2013
comment
нет, это все еще проблема. единственный способ, которым я нашел, чтобы верхние или нижние колонтитулы отображались даже на страницах с автоматическим переносом, - это использовать глобальный верхний или нижний колонтитул и установить его один раз для всего документа, что означает, что он не используется для отображения контекстного содержимого страницы.   -  person urchino    schedule 10.10.2013
comment
Я смог преодолеть это ограничение, только вручную вычислив, где вставить разрывы страниц — это немного грубо с точки зрения нумерации страниц, но затем вы можете установить верхние и нижние колонтитулы для новой страницы, и они будут работать правильно.   -  person urchino    schedule 06.11.2013
comment
Я как-то исправил, но, честно говоря, не помню, в чем именно была проблема, это было довольно давно. Я только что посмотрел на свой окончательный код, и он использует тот же тег sethtmlpageheader с теми же атрибутами. Я постараюсь найти время, чтобы изучить его и вспомнить его для вас.   -  person Saad    schedule 06.11.2013


Ответы (1)


У меня сработал следующий код (после удаления атрибута show-this-page="1" тега sethtmlpageheader) (это фрагмент из шаблона ветки (переменная category передается в шаблон из родительского), но я думаю, что он должен работать так же в других шаблонизаторы или ванильный html тоже):

{% set htmlPageHeaderName = "product-list-header-" ~ category.guid %}
<htmlpageheader name="{{ htmlPageHeaderName }}"> {# mPdf reserved tag #}
    <div class="product-list-header">
        <b>{{ macros.categoryHeadingWithParentsToLvl(category, "div", 0) }}</b></div>
</htmlpageheader>

<htmlpagefooter name="product-list-footer"> {# mPdf reserved tag #}
    <div class="product-list-footer">
        tel: <b>123 456 789</b>, fax: <b>123 456 788</b>, e-mail: <b>[email protected]</b>, web:<b>http://www.www.ww</b>
    </div>
    <div class="page-no">{PAGENO}</div>
</htmlpagefooter>

<sethtmlpageheader name="{{ htmlPageHeaderName }}" page="all" value="1" /> {# mPdf reserved tag #}

<sethtmlpagefooter name="product-list-footer" page="all" value="1"/> {# mPdf reserved tag #}
<columns column-count="2" valign="justify" column-gap="8"> {# mPdf reserved tag #}
    {% set categoryParents = category.parentsToLvl(1) %}
    {{ macros.categoryHeadingWithParentsToLvl(category, "h2", 1) }}
    <div class="productsList">
        {% for producerName, productsByEdition in productsByCategoryProducerEdition %}
            <div class="producerDiv">
                <h3>{{ producerName }}</h3>
                {% for editionName, products in productsByEdition %}
                    <div class="editionDiv">
    ...
person karel-von-barel    schedule 09.01.2017