- 1
[Opened] Generer un fichier pdf
[Opened] Generer un fichier pdf
Posted by laurentj on 08/19/2019 19:35
Bonjour,
Je te propose d'installer DomPDF dans ton projet, de générer le pdf dans un fichier, et d'utiliser l'objet réponse binary de Jelix, pour uploader le fichier vers l'utilisateur.
La solution la plus "propre", serait toutefois de créer un objet réponse spécifique pour dompdf, qui instancierai un objet dompdf et l'exposerait pour ton contrôleur via une méthode ou une propriété. Et cet objet réponse faisant directement le $this->dompdf->stream();
ça pourrait donner un truc comme ça :
class dompdfResponse extends jResponse { protected $_type = 'dompdf'; /** * @var \Dompdf\Dompdf */ protected $dompdf = null; public function output(){ if(!($this->dompdf instanceof \Dompdf\Dompdf)) { throw new Exception('dompdf not initialized'); } $this->dompdf->render(); $this->dompdf->stream(); } public function setHtmlContent($html) { if(!($this->dompdf instanceof \Dompdf\Dompdf)) { throw new Exception('dompdf not initialized'); } $this->dompdf->loadHtml($html); } public function initPdf(\Dompdf\Options $options = null){ $this->dompdf = new \Dompdf\Dompdf($options); }
Après avoir mis cette classe dans le répertoire response de l'application, et après avoir déclarer l'alias pour cet objet réponse dans la configuration comme ceci :
[responses] dompdf=dompdfResponse
Pour en savoir plus sur la création d'objet réponse : https://docs.jelix.org/fr/manuel/creer_response
Tu peux alors faire dans une méthode de ton contrôleur un truc dans le genre :
function getpdf() { $rep = $this->getResponse('dompdf'); $options = new \Dompdf\Options(); $options->.....; $rep->initPdf($options); $tpl = new jTpl(); $tpl->assign('unevariable', 'foobar'); ... $rep->setHtmlContent($tpl->fetch('monmodule~montemplate')); return $rep; }
[Opened] Generer un fichier pdf
Posted by laurentj on 08/19/2019 19:38
bien sûr, l'objet réponse que j'ai développé pourrait être enrichie avec des méthodes permettant de manipuler plus facilement DomPdf, ou encore d'initialiser avec des paramètres par défaut issue de la configuration de jelix (genre le charset, la langue, ou autre paramètres propres à dompdf etc)
[Opened] Generer un fichier pdf
Posted by bary on 08/20/2019 08:55
Merci ,je vais le tester et je donne de retour.
[Opened] Generer un fichier pdf
Posted by bary on 10/15/2019 14:35
Désolé pour le retard , ça marche !! Merci
- 1