Ancre HTML lors de la génération d'un PDF

Fermé
SOUMIE Messages postés 22 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 2 octobre 2022 - 28 janv. 2022 à 16:54
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 8 févr. 2022 à 18:31
Bonjour à tous,

J'ai créé un site PHP. Sur ce site, suite à un questionnaire répondu par les utilisateurs, je génère un PDF avec HTML2PDF(). La génération se passe très bien, si ce n'est une chose : les ancres HTML. En effet, dans mon PDF il y a une page avec un menu (un plan). Pour le rendre dynamique, je souhaite que lorsque je clique sur le numéro de la page, j'y aille directement (dans le même document/PDF). Pour ce faire, j'ai créé des ancres de type :

<a href="#pageDeux"> Page 2</a>
<div id="pageDeux">blabla...</div>


Ceci fonctionne très bien en HTML avant que le PDF soit généré mais dès que le PDF est généré, c'est l'adresse complète qui s'affiche, de type :

<a href="https://www.monsite.comp#pageDeux" > Page 2</a>


Résultat, le lien m'emmène vers une page extérieure et en ligne. Si je regarde le PDF hors connexion, je ne peux pas suivre le lien.

Si vous avez une solution je suis preneur et vous en remercie d'avance.

Cordialement,


Configuration: Macintosh / Safari 15.1
A voir également:

4 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
1 févr. 2022 à 12:59
Bonjour,

Voir sur la doc l'exemple 7 qui crée une ancre pour l'élément "document_reprise" :
https://github.com/spipu/html2pdf/blob/master/examples/res/example07b.php
https://github.com/spipu/html2pdf/blob/master/examples/res/example07a.php

Il semble donc que HTML2PDF utilises l'attribut name pour gérer les ancres :
<a href="#pageDeux">Page 2</a>
<div name="pageDeux">...</div>
0
SOUMIE Messages postés 22 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 2 octobre 2022 1
6 févr. 2022 à 16:19
Merci beaucoup Pitet pour votre réponse mais j'avais déjà essayer et cela ne fonctionne pas. Le lien ouvre quand même la page sur internet.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
7 févr. 2022 à 12:30
Si dans le pdf, le lien href est un lien absolu vers le site, par exemple
<a href="https://www.monsite.comp#pageDeux">Page 2</a>

il semble normal que le lien ouvre alors la page sur le site indiqué.

Le lien dans le PDF doit être en relatif sur le même document, par exemple
<a href="#pageDeux">Page 2</a>
0
SOUMIE Messages postés 22 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 2 octobre 2022 1
7 févr. 2022 à 17:37
Bonjour pitet,
Comme dans l’exemple de mon premier message, c’est déjà ce que j’ai fait bien évidemment.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
8 févr. 2022 à 18:31
En effet, le problème doit venir du fait que le ton lien semble passer en absolu dans le pdf, mais je n'arrive pas à reproduire ce problème.

Contrairement à ma première réponse, il semble que la balise div avec l'attribut name ne fonctionne pas, il faut également utiliser une balise a.
Mon test avec la dernière version de html2pdf (5.2.4) :
$html2pdf = new Html2Pdf();
$html2pdf->writeHTML('
<page>
    Page 1
    <a href="#page2">Lien vers page 2</a>
</page>
<page> 
    <a name="page2"></a>
    Page 2
</page>
');
$html2pdf->output();

Sur mon poste avec ce test, le lien redirige bien vers la page 2 du pdf.
0
jordane45 Messages postés 38371 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 janvier 2025 4 722
7 févr. 2022 à 22:13
Bonjour,

Pour créer un sommaire avec html2pdf il faut utiliser la fonction prévue à cet effet
  $html2pdf->createIndex('Sommaire', 25, 12, false, true, 1);
*
et utiliser le modèle fourni dans les exemples
https://github.com/spipu/html2pdf/blob/master/examples/res/bookmark.php


0