Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Generer un fichier pdf

Posted by bary on 08/19/2019 13:39

Bonjour, je souhaite générer un fichier pdf à partir d'un template mais j'ai rencontré un problème. En lisant la doc je vois pas comment faire si on veut une generation pdf à partir d'un template. Moi j'utilise DomPdf.

Merci

  [Opened] Generer un fichier pdf

Reply #1 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

Reply #2 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

Reply #3 Posted by bary on 08/20/2019 08:55

Merci ,je vais le tester et je donne de retour.

  [Opened] Generer un fichier pdf

Reply #4 Posted by bary on 10/15/2019 14:35

Désolé pour le retard , ça marche !! Merci

 
Page
  1. Generer un fichier pdf