La Performance de wkhtmltopdf
Nous avons l'intention d'utiliser wkhtmltopdf pour convertir html en pdf, mais nous sommes préoccupés par l'évolutivité de wkhtmltopdf. Quelqu'un aurait-il une idée de comment il évolue? Notre application web potentiellement pourrait tenter de convertir des centaines de milliers de (reletively complexe)html, il est donc important pour nous d'avoir une idée. Quiconque a aucune information à ce sujet?
- Arrondis en CSS Coins a été la cause de mes rend à l'augmentation du temps par 20X. La suppression de ces tomber ma rendu de ~6sec à ~0.3 sec sur une simple page HTML. par exemple.
border-radius: 8px;
etborder-top-left-radius: 6px;
- Dans mon cas, après beaucoup de l'enquête , j'ai eu url pour aller chercher des QRcode à partir de la troisième partie qui a été la tenue de la création de mes billets.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, votre question est tout à fait générale; il y a beaucoup de variables à considérer lors de la demande sur l'évolutivité de tout projet. Évidemment, il y a une différence entre la conversion des "centaines de milliers" de fichiers HTML sur une semaine et s'attendant à le faire en un jour, ou une heure. Sur le dessus de que "relativement complexe" HTML peut signifier différentes choses pour d'autres personnes.
Cela étant dit, j'ai trouvé depuis que j'ai fait quelque chose de semblable à cela, la conversion d'environ 450 000 fichiers html, en utilisant wkhtmltopdf; je vous ferais partager mon expérience.
Voici mon scénario:
J'ai utilisé un simple mono-thread d'un script écrit en PHP, pour parcourir les dossiers et passer le chemin de fichier en html pour wkhtmltopdf. Le processus a pris environ 2,5 jours pour convertir tous les fichiers, avec très peu d'erreurs.
J'espère que cela vous donne un aperçu de ce que vous pouvez attendre de l'utilisation de wkhtmltopdf dans votre application web. Certaines améliorations évidentes viendrait de l'exécution de cette sur le meilleur matériel, mais principalement de l'utilisation d'une application multi-thread pour traiter les fichiers simultanément.
Dans mon expérience, la performance dépend beaucoup de vos photos. Il y a beaucoup de photos de grande taille, il peut ralentir considérablement. Si possible je voudrais essayer de mettre en scène un test avec une estimation de ce que la charge sera pour vos serveurs. Certaines personnes ne l'utilisent pour des opérations intensives, mais je n'ai jamais entendu parler de hundrerds de milliers de personnes. Je suppose que c'est comme tout, cela dépend de votre contenu et de ressources.
La citation suivante est tout de suite l' wkhtmltopdf liste de diffusion:
Il y a quelques astuces pour améliorer les performances, mais je suggère d'essayer ce qui est de votre goulots d'étranglement avant de les optimiser pour la performance. Par exemple, je me souviens de quelques personne en disant que, si possible, le chargement d'images directement à partir du disque, au lieu d'avoir un serveur web inbetween pouvez l'accélérer conciderably.
Edit:
En ajoutant à cela j'ai juste eu le plaisir de jouer avec wkhtmltopdf. Actuellement sur un processeur Intel Centrino 2 avec 4 go de mémoire je génère des PDF avec 57 pages de contenu (mixte, p,ul,table), ~100 images et une table des matières prend constamment < 7 secondes. Je suis également en cours d'exécution de visual studio, le navigateur, le serveur http et de divers autres logiciels qui pourrait le ralentir. J'ai utiliser l'entrée standard stdin et stdout directement au lieu de fichiers.
Edit:
Je n'ai pas essayé, mais si vous avez lié CSS, essayez de l'intégrer dans le fichier HTML (n'oubliez pas de faire un avant et un après test pour voir les effets!). L'amélioration d'ici la plupart dépend probablement sur des choses comme la mise en cache et où le CSS est servi - si c'est lu à partir du disque à chaque fois dieu ne plaise ou régénérées à partir de scss, il pourrait être assez lent, mais si le résultat est mis en cache par le serveur (je ne pense pas que wkhtmltopdf caches quelque chose entre les instances), il peut ne pas avoir de grands effets. YMMV.
wkhtmltopdf --print-media-type
est ultra-rapide. Mais vous perdez normal le style CSS avec qui.Cela peut ne PAS être une solution idéale pour les complexes des pages html à l'exportation. Mais il a travaillé pour moi parce que mon contenu html sont assez simple et sous forme de tableaux.
Testé sur la version
wkhtmltopdf 0.12.2.1
Nous essayons d'utiliser wkhtmltopdf dans toutes les implémentations. Mes objets sont énormes tables pour généré des points de coordonnées. Généralement volume de mon pdf = 500 pages
Nous essayons d'utiliser le port de wkhtmltopdf pour .net. Les résultats sont
Nous essayons d'utiliser les binaires wkhtmltopdf appelé à partir de code C#.