Html 使用Jinja2在每个pdf页面上重复页眉和页脚

Html 使用Jinja2在每个pdf页面上重复页眉和页脚,html,jinja2,Html,Jinja2,我正在使用Jinja2与python、psycopg2和pdfkit一起创建一个pdf文件,具体取决于不同的变量 我有一个特定的页眉和页脚,应该放在每页上(如徽标、页码和其他类似项目)。我用添加了一个分页符(很好地工作) 我真的会避免在template.html中重复html代码块(因此对于每个页面都是如此)。有没有一个金贾的方式来定义这一点 这是template.html文件的一部分: <!DOCTYPE html> <html lang="it"> <head

我正在使用Jinja2与python、psycopg2和pdfkit一起创建一个pdf文件,具体取决于不同的变量

我有一个特定的页眉和页脚,应该放在每页上(如徽标、页码和其他类似项目)。我用
添加了一个分页符(很好地工作)

我真的会避免在template.html中重复html代码块(因此对于每个页面都是如此)。有没有一个金贾的方式来定义这一点

这是template.html文件的一部分:

<!DOCTYPE html>
<html lang="it">

<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="../templates/mystyle.css">
</head>

<body>
    <img src="../img/logo.png">
    <ul id="navigation">
        <li>The number is {{ query_dict.num_n }}</li>
    </ul>

    <table class="center">
    <!-- <table width=680 border=1 cellpadding=20 cellspacing=0> -->
        <tr>
            <th>Type of </th>
            <th>{{ query_dict.type }}</th>
        </tr>
        <tr>
            <th>Variable width</th>
            <th>{{ query_dict.width }}</th>
        </tr>
    </table>

    <!-- page break -->
    <div style="display:block; clear:both; page-break-after:always;"></div>

    <img src="../img/my_img.png">

    <!-- page break -->
    <div style="display:block; clear:both; page-break-after:always;"></div>

    <p>other content</p>
</body>

</html>

  • 数字是{query_dict.num_n}
类型 {{query_dict.type} 可变宽度 {{query_dict.width} 其他内容


一个选项是在单独的html页面上创建页眉/页脚,并使用jinja2的两个选项之一在主html页面上重复此页面。这样,您只需在每个分页符上包含一条简单的语句

这些将是或通过使用子模板

其中包括:

template.html:

<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../templates/mystyle.css">
</head>

<p>Content<p>

{% include 'myFooter.html' %}
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../templates/mystyle.css">
</head>

<p>Content<p>

<div id="content">{% block footerContent %}{% endblock %}</div>
footerChild.html

{% extends "template.html" %}
{% block footerContent %}
<div id="footer">
&copy; Copyright 2020 by <a href = "mailto: yourmail@mail.com">YourName</a>.
</div>
<img src="../img/logo.png">
<!-- page break -->
<div style="display:block; clear:both; page-break-after:always;"></div>
{% endblock %}
{%extends“template.html”%}
{%block footerContent%}
&抄袭;版权所有2020年。
{%endblock%}

当然,您可以将它们包含到循环或s中以满足页面的条件。

一个选项是在单独的html页面上创建页眉/页脚,并使用jinja2的两个选项之一在主html页面上重复此页面。这样,您只需在每个分页符上包含一条简单的语句

这些将是或通过使用子模板

其中包括:

template.html:

<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../templates/mystyle.css">
</head>

<p>Content<p>

{% include 'myFooter.html' %}
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../templates/mystyle.css">
</head>

<p>Content<p>

<div id="content">{% block footerContent %}{% endblock %}</div>
footerChild.html

{% extends "template.html" %}
{% block footerContent %}
<div id="footer">
&copy; Copyright 2020 by <a href = "mailto: yourmail@mail.com">YourName</a>.
</div>
<img src="../img/logo.png">
<!-- page break -->
<div style="display:block; clear:both; page-break-after:always;"></div>
{% endblock %}
{%extends“template.html”%}
{%block footerContent%}
&抄袭;版权所有2020年。
{%endblock%}
当然,您可以将它们包含到循环或s中,以满足页面的条件