Aller au contenu

HTML2PDF


TYBMHI
Aller à la solution Solutionné par TYBMHI,

Sujets conseillés

Bonjour à tous,

J'ai réalisé un site web sur lequel les internautes répondent à un questionnaire. Avec HTML2PDF je génère un PDF (15 pages) qui analyse les réponses (enregistrées dans ma BdD SQL). Tout fonctionne parfaitement sauf une chose : lorsque je génère le PDF en une seule fois, la qualité du CSS se dégrade et les images disparaissent à partir de la 8e page. Je suis donc obligé de générer 3 fichiers PDF (7 pages, 7 pages et 1 page). Si quelqu'un peut m'aider, je le remercie infiniment d'avance car je galère avec ça depuis très longtemps.

 

<script src="/feuille_PHP_code/html2pdf/dist/html2pdf.bundle.min.js"></script>

   <script>
       function generatePDF() {
          var element = document.getElementById('pdf');
          var opt = {
            margin: 6,
            filename: 'Profil-<?php echo "$prenom-$nom"; ?>-block-1.pdf',
            image: {type: 'jpeg',quality: 1},
            html2canvas: {dpi: 384, letterRendering: true},
            jsPDF: {
              unit: 'mm',
              format: 'A4',
              orientation: 'portrait'
            }
          };
          html2pdf().set(opt).from(element).save();
        }
    </script>

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Tu es certain que tu n'as pas une limite de mémoire pour JavaScript ?

Tu peux tester en baissant le dpi à 200 et voir si ça passe la page 8 ?

 

As-tu vérifié le log d'erreurs du site lorsque tu génères un PDF de 15 pages ?

 

SI tu peux installer la bibliothèque, tu as html2pdf pour php, qui a moins de limitations.

 

Dan

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour et grand merci pour ta réponse Dan. J'ai déjà essayé de réduire le DPI. J'ai aussi essayé de le remplacer par scale:2 mais rien ne change. En revanche, comment je fais pour vérifier et modifier la limite de mémoire pour JavaScript. Ce dernier élément me parait être une piste sérieuse.

Je sais que HTML2PDF est aussi en PHP mais je trouve la version Javascript plus simple, surtout pour modifier le CSS et HTML à ma guise.

 

Merci encore Dan

Lien vers le commentaire
Partager sur d’autres sites

Hello,

 

Je sais comment faire pour node.js... mais ne sais pas si c'est ton environnement.

Par défaut, node a une limite de 2GB.

 

Pour la changer on lance ceci :

node --max-old-space-size=4096 ton_script.js

ou bien pour rendre cette limite pérenne

node --max-old-space-size=4096 `which npm` install

 

Dans ces deux cas on l'augmente à 4GB.

 

Lien vers le commentaire
Partager sur d’autres sites

  • Solution

Encore merci Dan,

 

Je viens d'essayer mais ça ne fonctionne toujours pas. J'ai monté même à 6000 mais ça ne fonctionne pas. En revanche, je viens de remarquer qu'en changeant de navigateurs ce n'est toujours pas parfait mais c'est mieux (ou moins dégradé).

Firefox : CSS très dégradé et image qui disparait

Chrome : CSS moins dégradé et image ne disparait pas

Edge : idem Chrome

Safari : plus de problème

 

Je suis sur Macbook. Ca m'embête mais je vais devoir utiliser safari et plus firefox. Un grand merci DAN !!

Lien vers le commentaire
Partager sur d’autres sites

Non, pas vraiment.

Tu peux facilement tester en remettant la mémoire par défaut pour voir si cela fonctionne toujours avec Safari.

 

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...