Impression et en-tête de page : casse-tête
https://chierchia.fr/blog/2016/06/impression-en-tete-de-page-casse-teteIl y a quelques semaines, je travaillais sur un template de bilan comptable, destiné a être imprimé via notre application IBAKUS®COMPTA, dans lequel l’en-tête de page devait se répéter sur chaque pages du document.
L’en-tête de page était constitué de plusieurs éléments permettant d’identifier le déposant (le nom de la société, son adresse, son numéro RC et TVA, etc.), la date d’impression, le titre du document, etc. Quelque chose dans ce style là :
<div class="document-head container">
<div class="document-datas one-half">
<h1>Titre du document</h1>
<p>Édité le 16/06/2016</p>
...
</div>
<div class="declarer-datas one-half">
<ul>
<li>Numéro RC : 0123456789</li>
<li>Numéro TVA : 0123456789</li>
</ul>
<p>Nom de la société</p>
<p>1 Infinite Loop</p>
...
</div>
</div>
Plusieurs tableaux de données comptable venaient ensuite peupler le document. Bien entendu, n’importe quel tableau pouvait s’étaler sur plusieurs pages. Il fallait donc pouvoir répéter les en-têtes des tableaux à chaque saut de page !
Répéter les en-têtes d’un tableau
Pour répéter les en-têtes d’un tableau sur toutes les pages imprimées qu’il occupera, c’est très simple. Attention les yeux : il suffit d’utiliser les balises <thead>
, <th>
et <tbody>
dans la structure du tableau pour que la magie opère ! C’est tout !
<table>
<thead>
<tr>
<th>Colonne 1</th>
<th>Colonne 2</th>
<th>Colonne 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>bla bla</td>
<td>bla bla</td>
<td>bla bla</td>
</tr>
...
</tbody>
</table>
Répéter l’en-tête de page
Lorsqu’on veut imprimer un en-tête personnalisé en plus de répéter les en-têtes des tableaux sur chaque pages HTML, c’est toujours un peu galère, il faut se débrouiller à grand coup de Javascript et de CSS pour arriver à ses fins. Mais, il y a plus simple ! Eh oui, un petit coup de <thead>
!
<table>
<thead>
<tr>
<th colspan="3">
<div class="document-head container">
<div class="document-datas one-half">
<h1>Titre du document</h1>
<p>Édité le 16/06/2016</p>
...
</div>
<div class="declarer-datas one-half">
<ul>
<li>Numéro RC : 0123456789</li>
<li>Numéro TVA : 0123456789</li>
</ul>
<p>Nom de la société</p>
<p>1 Infinite Loop</p>
...
</div>
</div>
</th>
</tr>
<tr>
<th>Colonne 1</th>
<th>Colonne 2</th>
<th>Colonne 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>bla bla</td>
<td>bla bla</td>
<td>bla bla</td>
</tr>
...
</tbody>
</table>
Il est effectivement possible d’ajouter autant de lignes (<tr>
) que l’on souhaite dans un <thead>
. Cette solution fonctionne assez bien.
Attention !
Sauf si vous faites un float: left
sur les <div>
, et là tout fout le camp ! Votre en-tête s’affichera bien sur la première page, par contre les suivantes se verront décorées d’un bel espace vide en guise d’en-tête. Dommage !
0 Webmentions
No webmentions were found.
- {% for webmention in webmentions %}
- {{ webmention.content }} {% endfor %}
No bookmarks were found.
{% endif %}- {% for webmention in webmentions %}
- {% endfor %}
No likes were found.
{% endif %}- {% for webmention in webmentions %}
- {{ webmention.content }} {% endfor %}
No links were found.
{% endif %}- {% for webmention in webmentions %}
- {{ webmention.title }} {% endfor %}
No posts were found.
{% endif %}- {% for webmention in webmentions %}
- {{ webmention.content }} {% endfor %}
No replies were found.
{% endif %}- {% for webmention in webmentions %}
- {% endfor %}
No reposts were found.
{% endif %}- {% for webmention in webmentions %}
- {% endfor %}
No RSVPs were found.
{% endif %}- {% for webmention in webmentions %}
-
{% if webmention.author %} {% endif %}{% if webmention.content %} {{ webmention.content }} {% else %} {{ webmention.title }} {% endif %} {% endfor %}
No webmentions were found.
{% endif %}