1

Bonjour,

J'ai lu et essayé la methode décrite sur la page suivante :
topics/119933-v319-contenu-variable-positionner-un-element-en-bas-de-derniere-page#28

Elle consiste à ajouter une nouvelle balise pour afficher un element sur la derniere page si la page dispose de la hauteur suffisante sinon Newpage.

Ceci marche parfaitement mais j'ai besoin d'aide afin de gérér le backbottom.
En effet je souhaite avoir un backbottom (marge du bas de page) de 10 mm sur toutes les pages sauf la dernière page car l'élement que je veux ajoutée à la fin doit être tous en bas de la page.

Peut on définir un backbottom spécifique par page ? si non peut tu me donner quelque piste pour y remédier ?

Merci d'avance pour votre aide



2

ca dépend.
si toutes tes pages sont définies entre des balises <page>, il te suffit de mettre pour la derniere page la valeur que tu veux.

si c'est un ensemble de page dans un page unique (comme un grand tableau par exemple), ce n'est pas possible...
Ancien pseudo : lolo

3

Merci de ta réponse rapide,

Le cas que je voudrais résoudre et bien celui ou il y a un seul contenu qui génère une ou plusieurs page.

Je vois les choses comme ca :

- soit j'essaye de définir un backbottom spécifique pour la derniere page (mais vu que vous me dites que c'est pas possible c'est que ca doit être vraiement compliqué à changer)
- soit je définie un backbottom à 0 de la page et j'essaye de gérer le déclenchement de la new_page sur toutes les pages sauf la derniere
- soit je définie à chaque fois une <page> pour la derniere page de mon pdf mais ceci implique que cette page à uniquement le dernier élèment sans rien d'autre ce qui est comme même moins bien pour mon cas.

Est-ce possible de changer la valeur du backbottom dans le fichier html2pdf.class.php lors de l'appel d'une methode qui correpond a ma balise suivante par exemple ?
J'ai vu aussi le methode setMargin() puis je modifier avec ceci mes marges en fonction du numero de la page ?


/**
* balise : END_LAST_PAGE
* mode : OUVERTURE
*
* @param array paramètres de l'élément de parsing
* @return null
*/
function o_END_LAST_PAGE($param)
{
$height = $this->style->ConvertToMM($param['end_height'], $this->pdf->h - $this->pdf->tMargin-$this->pdf->bMargin);

if ($height < ($this->pdf->h - $this->pdf->tMargin-$this->pdf->bMargin) && $this->pdf->y + $height>=($this->pdf->h - $this->pdf->bMargin))
$this->setNewPage();
}
/**
* balise : END_LAST_PAGE
* mode : FERMETURE
*
* @param array paramètres de l'élément de parsing
* @return null
*/
function c_END_LAST_PAGE($param)
{

}

4

oui oui, il est tout à fait possible de directement changer la valeur de backbottom lors de l'appel de la methode o_END_LAST_PAGE smile il suffit de regarder comment la balise page prend en compte la valeur de backbottom et de faire pareil dans o_END_LAST_PAGE )
Ancien pseudo : lolo

5

J'ai trouvé une solution donc voici ce que j'ai fait d'ici que quelqu'un veux faire la meme chose que moi.

Insérer ce script dans html2pdf.class.php :

/**
* balise : END_LAST_PAGE
* mode : OUVERTURE
*
* @param array paramètres de l'élément de parsing
* @return null
*/
function o_END_LAST_PAGE_WITHOUT_BMARGIN($param)
{
$this->background['bottom'] = $param['backbottom'];
$this->setMargins();

$this->pdf->bMargin = 0;
$height = $this->style->ConvertToMM($param['end_height'], $this->pdf->h - $this->pdf->tMargin-$this->pdf->bMargin);

if ($height < ($this->pdf->h - $this->pdf->tMargin-$this->pdf->bMargin) && $this->pdf->y + $height>=($this->pdf->h - $this->pdf->bMargin))
$this->setNewPage();
}
/**
* balise : END_LAST_PAGE
* mode : FERMETURE
*
* @param array paramètres de l'élément de parsing
* @return null
*/
function c_END_LAST_PAGE_WITHOUT_BMARGIN($param)
{

}

Appel de la balise :
<end_last_page_without_bmargin end_height='160mm' backbottom='0''>
contenu
</end_last_page_without_bmargin>

Point ajouté :
$this->background['bottom'] = $param['backbottom'];
$this->setMargins();


Pour résumer :

J'ai toujours mon backbottom général a 10 mais si je passe par la balise de fin on set le backbottom à 0

Voila