Jump to content

HTML2PDF


TYBMHI
 Share

Go to solution Solved by TYBMHI,

Recommended Posts

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>

 

Link to comment
Share on other 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

 

 

 

Link to comment
Share on other 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

Link to comment
Share on other 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.

 

Link to comment
Share on other 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 !!

Link to comment
Share on other sites

C'était donc quand même la mémoire, ou tu as essayé sur d'autres navigateurs sans modifier celle-ci ?

 

Link to comment
Share on other sites

J'avais fait la modification de la mémoire comme tu l'as proposé. Mais si c'était un problème de mémoire, est-ce normal que cela ne fonctionne qu'avec Safari ?

Link to comment
Share on other sites

Non, pas vraiment.

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

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...