1

Anyone knows how can I use an especific header for the first page and an epecific footer for the last page?
If it is not possible, is there a way to put an element to the bottom of a page?

2

i have the same question, do you have the solution?

3

Hi, (I'm French so sorry for my quite basic english)

When you define a page with <page>, you can define your header and footer like in this example:

<page>
<page_header>
<p style=\"font-size: 11px; text-align: left;\">My Header</p>
</page_header>
<page_footer>
<p style=\"font-size: 11px; text-align: left;\">My Footer</p>
</page_footer>

[My content]

</page>

To define another header and footer you just need to have closed </page> and to open another one with your new header and/or footer.

Note: When you close a page and then open one, your previous page will create a jump-line to the new page.

4

je vais te répondre en français,, puisqu'on l'est tous les 2.

mon document peut faire une page, comme il peut en faire 2 ou 3 selon le contenu qui découle d'un formulaire.

donc en fait, je ne sais pas quand se fait le changement de page, d'où ma question. ta solution est bonne, mais à la condition de savoir quand on change de page.

tu aurais une autre idée?

en tout cas, merci de ta réponse

5

Ok^^ çà m'arrange un peu de parler français.

ta solution est bonne, mais à la condition de savoir quand on change de page. justement, tant que ton contenu se trouve dans une même balise page, le découpage pour l'affichage de chaque page se fera automatiquement


En fait, ton contenu peut faire 3000 lignes (imaginons que çà représente 3 pages) et bien, si tu englobes ce même contenu dans une même balise page (avec son <page_header> et son <page_footer>) çà fera 3 pages avec la structure d'une seule même balise <page>, le découpage pour afficher chaque page se fait automatiquement.

Et justement, personnellement, je l'utilise, j'ai une balise page qui contient ma page de couverture avec juste un footer, ensuite j'ai une autre balise page qui contient une partie qui doit bien prendre 2 pages, avec un footer et un header différent.

Je te mets un exemple, j'ai pas testé le code, mais c'est pour que j'arrive à te faire comprendre ce que j'essaye de dire de façon peu clair
<page> <page_footer> mon pied de page </page_footer> ...le contenu de ma page de couverture... </page> <page> <page_header> mon header </page_header> <page_footer> mon pied de page </page_footer> ...le contenu qui prend énormément de lignes... </page>

Et donc à chaque fois que le contenu de ma dernière balise <page> arrive en fin de page (par rapport à la hauteur de page disponible pour l'écriture, les marges...), çà en créé une nouvelle avec les mêmes en-têtes et pieds de page.

Après, tu peux aussi englober en plus ton contenu dans:<div style='display:block;'>
C'est pour que ton contenu soit traité comme un seul bloc (si tu veux que certains éléments apparaissent absolument ensemble sur la même page par exemple.

6

ce que tu proposes marche bien, mais pas dans mon cas.

je n'ai pas de page de couverture, j'ai directement cette partie de ton code
<page> <page_header> mon header </page_header> <page_footer> mon pied de page </page_footer> ...le contenu qui prend énormément de lignes... </page>

Le problème est que le header des pages suivantes, ne doit pas être le même que pour la première page.

sinon j'ai pensé à ce système : je remplace le contenu de mon <page_header> par XXXXXX

après le $html2pdf->WriteHTML($content) je remplace le 1er XXXXXX par mon premier header, et les autres XXXXXX par mon deuxième header. mais je n'arrive pas à le mettre en place

7

D'accord, donc, si j'ai bien compris:
- tu souhaites que la première page ait un header différent des suivantes
- tu ne connais pas la taille de cette première page

Tu proposes de placer comme contenu de ton <page_header> une variable, tu peux oui, mais j'ai bien peur que tu ne puisses pas en changer la valeur comme çà dans une même balise <page>.

Malheureusement à part fermer la balise </page> pour en ouvrir une autre, je ne vois pas d'autres solutions, et je doute que déclarer 2 balises <page_header> fonctionnent également.

Tu ne peux vraiment pas estimer la longueur de cette première page? Çà résoudrait ton problème bien plus facilement.

8

non je ne peux pas, car les données du pdf proviennent d'un formulaire. il y a une quarantaine de champs, seuls quelques uns sont obligatoires (nom, prénom...)

du coup dans les cas extrêmes, il peut y avoir 6 champs (les obligatoires) ou 40 (si l'on répond à tout). la mise en forme de chaque réponse n'étant pas la même, je ne peux pas fermer la page après X champs.

dans mes recherches j'ai vu des personnes parler de balise <page_first_header> mais impossible de la faire fonctionner...

9

D'accord, donc l'affichage de tes 40 saisies dans un formulaire dépasse une page, ok, je comprends mieux.

Ce que tu peux faire, attention c'est du bidouillage, c'est définir une <div> par exemple et placer ton contenu pour la première page, après, tu le places via style='position:fixed; top:0; left:0; right:0;'... tu définies également la hauteur et autre.

10

cette idée n'est pas bête, je n'y avais pas pensé.

j'affiche mon 2ème header sur toutes pages, et j'ajoute un <div> sur le header de la 1ère page, avec les infos propre à cette page là.

c'est surtout, que j'ai la même chose à faire avec le footer, celui de la dernière page doit être différent (signature...)

je teste ça et te dis le résultat.

merci en tout cas

11

pour le header, c'est parfait. ça marche impec.

pour le footer en revanche, je n'arrive pas à le placer comme il faut. il e place juste au dessus de l'autre footer, et si je joue sur le style, il passe sur une autre page qui se crée automatiquement...

12

(pour le footer) héhé^^, j'ai eu exactement le même problème, j'avais une marge en bas de page qui faisait que çà se plaçait mal.
Si tu regardes cette ligne de code:$html2pdf = new HTML2PDF('P', 'A4', 'fr', false, 'ISO-8859-1', array(6, 6, 6, 0));

Tu vois qu'il y a un tableau en paramètre, il définit les marges de ton documents, j'ai estimé que 6 étant la marge par défaut pour le format A4, j'ai donc mis 0 en dernier pour que la marge en bas de page soit nul [ce n'est pas comme en css (haut, droite, bas, gauche), mais (gauche, haut, droit, bas)]

Après, c'est un footer que j'ai placé, donc, tu peux jouer avec le position:fixed; et en placer par rapport au bottom: avec une valeur négative (je sais que çà n'avait pas fonctionner chez moi, mais on ne sait jamais)

13

Je teste ça dans la journée, je suis passé sur la mise en forme du reste du pdf pour l'instant. Je te tiens au courant.

Merci encore