TYBMHI Posté 7 Novembre 2021 Posté 7 Novembre 2021 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>
Dan Posté 7 Novembre 2021 Posté 7 Novembre 2021 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
TYBMHI Posté 7 Novembre 2021 Auteur Posté 7 Novembre 2021 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
Dan Posté 7 Novembre 2021 Posté 7 Novembre 2021 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.
Solution TYBMHI Posté 7 Novembre 2021 Auteur Solution Posté 7 Novembre 2021 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 !!
Dan Posté 7 Novembre 2021 Posté 7 Novembre 2021 C'était donc quand même la mémoire, ou tu as essayé sur d'autres navigateurs sans modifier celle-ci ?
TYBMHI Posté 7 Novembre 2021 Auteur Posté 7 Novembre 2021 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 ?
Dan Posté 7 Novembre 2021 Posté 7 Novembre 2021 Non, pas vraiment. Tu peux facilement tester en remettant la mémoire par défaut pour voir si cela fonctionne toujours avec Safari.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant