Joseph Joestar Posted April 23, 2018 Share Posted April 23, 2018 (edited) Salut à tous, Voici ma question: En fait, je permets aux clients de générer un document PDF (avec TCPDF) dans un nouvel onglet en cliquant sur une page de notre site Web. Ce nouvel onglet reste vide pendant la génération jusqu'à ce que le document soit prêt et commence à être téléchargé. Mais certains documents sont très lents à générer et cette page blanche est très agaçante (peut-être que beaucoup de mes clients penseront que ça ne marche pas). J'ai cherché une solution depuis un certain temps maintenant, mais rien de très intéressant. Si vous avez une idée, une idée, je serai très heureux de le lire. M. PS: <?php class ukoo_compatcatalogPDFModuleFrontController extends ModuleFrontController{ public $auth = true; public $ssl = true; public function initContent(){ parent::initContent(); $this->setTemplate('catalogPDF.tpl'); $this->renderPDF(); } public function renderPDF(){ require_once _PS_MODULE_DIR_ . 'ukoo_compat/pdf/HTMLTemplateCatalogPdf.php'; $pdf = new PDF("test", 'CatalogPdf', Context::getContext()->smarty); $pdf->render(); } } Edited April 23, 2018 by Joseph Joestar (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted April 23, 2018 Share Posted April 23, 2018 En même temps, envoyer Context::getContext()->smarty à la classe pdf, faut y aller fort quand même ? Z'avez jamais effectué un debug de cette variable ? Pourquoi envoyer toutes ces données dont 90% sont inutiles à la génération de votre pdf ? Link to comment Share on other sites More sharing options...
doekia Posted April 23, 2018 Share Posted April 23, 2018 Quel est exactement ta question? Accélère ton code de génération du PDF ? Prend un hébergement plus puissant? Allège tes pages PDF ? Génère ton PDF via cron et envoi un version cache ? Link to comment Share on other sites More sharing options...
Joseph Joestar Posted April 24, 2018 Author Share Posted April 24, 2018 Bonjour, Mon problème est le suivant : Lorsque j'appelle mon contrôleur dans lequel j'appelle la génération de mon PDF, la page reste blanche tant que la génération n'est pas complète, ( ce qui peut prendre un certain temps) j'aimerais juste afficher un message informatif sur ma page pendant ce temps de chargement. Mais malgré pas mal de recherches, pas moyen d'afficher quoi que ce soit avant la finalisation de la génération. Deux, Trois infos sur lesquelles je n'ai pas été claire : - Les documents PDF sont différents à chaque fois en fonction de la demande du client, et les informations qui sont à l'intérieur sont susceptibles de changer régulièrement. Il est donc impossible pour moi de les mettre en cache. Effectivement, j'envoie Context::getContext()->smarty pour générer mon catalogue. Je l'ai un peu fait par mimétisme de ce que j'avais vu à droite à gauche sans penser une seule seconde à n'envoyer que les variables qui me sont nécessaires. Je vais y remédier tout de suite ^^ Link to comment Share on other sites More sharing options...
doekia Posted April 24, 2018 Share Posted April 24, 2018 Le protocole HTTP ne permet pas cela. L'on fait un requête (GET/POST) le serveur fournit une réponse. Fin de la requête. Fait une page statique - patientez !, faire un appel ajax dans cette page qui génère le pdf, une fois celui-ci généré, faire apparaitre un lien vers le PDF généré (donc en cache en quelque sorte) Donc clic => get, page xhdr(get), bouton clic => get (attachment). Penser à mettre ne place un mécanisme de purge des PDF générés Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now