1

Bonjour à tous,

J'utilise html2pdf depuis maintenant 7mois et j'en suis ravi. Le seul petit souci que j'ai c'est le temps de création de mes pdf, j'en suis à 24secondes pour un pdf de 40pages.

En effet le pdf contient énormément de tableaux et cela me ralenti beaucoup le temps de création. Est-ce qu'il y aurait un moyen d'accélérer la création d'un pdf contenant des tableaux? Je sais déjà qu'il ne faut pas imbriquer des sous tableaux car trop consommateurs de ressources.

De plus pour tout ce qui est images, y a t'il moyen d’accélérer la création suivant l'extension ou autres?

Sinon, j'ai le contenu de mes tableaux qui est importé d'une base mysql, pourquoi est-ce que certains tableaux (page en paysage) se créées et prennent plus de 3 pages sans soucis et d'autres bloquent la création du PDF au delà de 10 lignes de contenu (qu'ils soient seuls ou avec les autres tableaux).......?????? bizarre non, surtout que les requêtes sont corrects et le résultat est bon, mais je suis obligé de mettre un LIMIT 10 dans mes requêtes.....

Il faudrait mettre des petites astuces dans le wiki pour savoir ce qui est conseillé pour une création du pdf rapide (format image, type de tableau, css etc...)

Juste comme ça, question à part pour le créateur de HTML2PDF, tout le monde rencontre des problèmes avec les tableaux et posent des questions sur ce forum ou d'autres. Donc, est-ce qu'il est possible de faire une meilleure prise en charge des tableaux? J'ai cru comprendre qu'il y avait une adaptation du code html avec 6 étapes avant d'avoir le PDF final.

Merci a tous.

Maxredphenix

2

Bon toujours pas de réponses.....

Sinon j'ai fait pas mal de tests avec le mode débug, voila quelques petites choses qui ont accéléré la création de mes pdf:
- Mettre les accents en html exemple: é pour le é, cela a fait en sorte que mes PDF se créent alors qu'avant j'avais des erreurs de création car trop long et en moyenne 30ms par ligne de texte.
- Idem pour la récupération des données depuis une bdd, faire un affichage des données en html:
<?php echo htmlentities($datas['batiment'],ENT_QUOTES,'UTF-8');?>
ou
<?php echo nl2br(htmlentities($datas['batiment'],ENT_QUOTES,'UTF-8'));?>
- Ne pas mettre de css3 et faire attention sur certaines balises en css2


Je cherche encore comment accélérer la création et je donnerai les infos sur ce topic

Pour info, j'ai trouvé ceci sur le net, il faut 6 couches d’analyse et de traitement pour générer un PDF :
Préparation template->Traitement template->Sortie template->Préparation PDF->Adaptation->Sortie PDF

Et il faudrait mettre l'info pour le debug dans le wiki parce qu'une personne ne connaissant pas trop ne sera pas ou placer la ligne de commande $html2pdf->setModeDebug();

maxredphenix

3

Serait-il possible de créer un en-tête et pied page une seule fois? parce que j'ai 40pages et du coups cela me fait 40x2 tableaux à 80ms en moyenne soit presque 6secondes de perdu pour cela....

Alors qu'en pensez-vous?

4

Bon je continu mon post sur mes divers tests afin de créer plus rapidement un pdf

Après plusieurs essaies sur divers pages html donc plusieurs PDF: le fait d'enlever les div diminue le temps de création par moitié.
Exemple :
<td style="width:25%; float:center"><img src="./doc/logo_min.png" alt="Logo"></td>

sera plus rapide à générer que:
<td style="width:25%; float:center"><div><img src="./doc/logo_min.png" alt="Logo"></div></td>

J'ai dans mon cas une génération en 165ms (en moyenne) contre 330ms, multiplié par le nombre de div que j'avais avant c'est ENORME.


Ensuite, si vous êtes sure du bon fonctionnement de vos tableaux et de l’existence de vos images mettez ceci, moi j'ai gagné 2s en moyenne sur mes documents de 40pages
// Test du dépassement des colonnes de tableaux dans les pages - True/False
$html2pdf->setTestTdInOnePage($mode = false);
// Activer/Désactiver le test d'existence des images - True/False
$html2pdf->setTestIsImage($mode = false);

Je continue dans mon idée de générer une seule fois l'en-tête pied de page (fait avec des <table>) afin d'accélérer encore un peu la génération......

5

Une autre petite amélioration possible: le header/footer.

En effet, le fait d'ajouter une entête ou un pied de page avec une création en mode tableau ralenti pas mal la création du pdf. Il faut en moyenne 250ms pour les 2 et par page, le simple fait de les créer avec une image divise par 3 le temps de création, pas mal non!

Préférer donc:
<page_footer><img src="./doc/piedpage.png"></page_footer>

à

<page_footer>
<table class="page_footer"><tr>
<!-- Text de gauche -->
<td style="width: 33%; text-align: left;">Blabla</td>
<!-- Page xx / xx -->
<td style="width: 34%; text-align: center">Page [[page_cu]]/[[page_nb]]</td>
<!-- Text de droite: Copyright -->
<td style="width: 33%; text-align: right">© maxredphenix</td>
</tr></table>
</page_footer>

6

merci pour toute ces recherches,

il serais intéressant de voir si il est possible de "precalculer" certaines choses,
pour beaucoup d'utilisateur la structure générale des documents générés est toujours la même, sauver les "templates" serais pertinents,

à default, ta solution d'utiliser des images est très bien
et la le mec il le pécho par le bras et il lui dit '

7

De rien smile

Il faudrait voir avec le créateur de ce soft pour avoir une meilleure gestion des tableaux ainsi que la possibilité comme tu dis de sauver les "templates".

Ce sont des trucs bêtes mais qui ralentissent beaucoup la création du pdf, surtout que les entetes/pied de page sont quasiment toujours identique......

Je continue quand même à chercher d'autres moyen d'accélérer, en faisant des tests sur le type d'image ainsi que leurs largeurs leur positionnement. Pareil c'est bête mais j'ai constaté des différence en positionnant avec un float center ou un margin censé déplacer l'image au centre ?????

De toute façon je vais créer un post pour chaque amélioration que j'ai trouvé.

A bientôt

8

Merci pour les tuyaux. Je ne peux pas trop enlever de DIV, mais je pense gagner un peu avec tes
// Test du dépassement des colonnes de tableaux dans les pages - True/False 
 $html2pdf->setTestTdInOnePage($mode = false); 
 // Activer/Désactiver le test d'existence des images - True/False 
 $html2pdf->setTestIsImage($mode = false); 


Et c'est appréciable de ne pas avoir d'alerte pour les images...je préfère le constater de moi-même parce que l'image n'est peut-être pas indispensable.

Je teste en IIS local sur mon PC Windows 7, et j'ai alloué plus de memory-limit à PHP, mais le CPU du PC ne semble jamais très sollicité. C'est comme si html2pdf / PHP n'exploite pas les possibilités à fond - bon....il ne faut bien sûr pas manger tout le CPU...
html2pdf 4.03