Jump to content

Afficher le template d'une page avant la génération d'un document PDF [PS 1.6]


Recommended Posts

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 by Joseph Joestar (see edit history)
Link to comment
Share on other sites

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

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

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

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
×
×
  • Create New...