【问题标题】:mpdf dynamic HTML headers not appearing after auto page-breaks自动分页符后未出现 mpdf 动态 HTML 标头
【发布时间】:2026-02-11 13:45:02
【问题描述】:

我有一个使用 mpdf 动态生成的 PDF 报告,其中 HTML 标题在整个文档中动态更改。这适用于我手动插入分页符并设置新标题的所有页面,但是分页符是由页面溢出的内容引起的,标题不会出现,我留下了一个空白空间。

我正在使用 html 标签来设置更新时的标题:

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

我已尝试更改此设置(例如添加 page="all" 属性),但它只会使问题变得更糟而不是更好,事实上,我尝试过的大多数可能的解决方案都导致了比他们更多的问题固定。

【问题讨论】:

  • 您能找到解决方案吗?
  • 不,这仍然是个问题。我发现即使在自动换行页面上也能出现页眉或页脚的唯一方法似乎是使用全局页眉或页脚并为整个文档设置一次,这意味着不使用它来显示页面上下文内容跨度>
  • 我只能通过手动计算插入分页符的位置来克服这个限制 - 从分页的角度来看这有点粗糙,但是您可以为新页面设置页眉和页脚它们工作正常。
  • 我以某种方式修复了它,但老实说,我不记得到底是什么问题,现在已经很久了。我刚刚查看了我的最终代码,它使用了具有相同属性的相同 sethtmlpageheader 标记。我会尝试抽出一些时间来研究它并为您回忆。

标签: php codeigniter mpdf


【解决方案1】:

以下代码对我有用(在删除 sethtmlpageheader 标记的 show-this-page="1" 属性后)(它是树枝模板中的一个 sn-p(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>info@info.info</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">
    ...

【讨论】: