Création d'une vue PDF pour un composant

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Création d'une vue PDF pour un composant

    Bonjour à tous,

    Je débute un peu dans le domaine de la création des composants joomla.
    J'ai conçu un composant pour gérer des partenaires et j'ai besoin de générer des PDF (des listes de partenaires).

    J'ai créé ma vue dans mon composant:
    - view/listing/view.pdf.php
    - view/listing/tmpl/default_pdf.php qui contient mon code PHP pour le PDF (et import de la classe FPDF).

    Or quand j'affiche ma vue avec l'adresse : index.php?option=com_<nomcomposant>&view=listing

    Celle ci me retourne une erreur 500 avec "Affichage introuvable [name, type, prefix] : listing, html, pepartenaireView".
    et si je remplace le nom du fichier view.pdf.php par view.html.php, et default_pdf.php par default.php cela me retourne le texte brut du PDF.

    Est ce que quelqu'un peut m'aider à comprendre pourquoi la vue HTML fonctionne et pas la vue PDF ?

    D'avance merci de votre aide.

  • #2
    Re : Création d'une vue PDF pour un composant

    Bon en fait, je viens de lire un autre post (celui-ci) et il semble que j'ai oublié de mettre à la fin de mon URL "&format=pdf" ce qui donne :

    index.php?option=com_<nomcomposant>&view=listing&f ormat=pdf

    Du coup cela fonctionne mieux par contre, il prend par défaut, la libraire phocaPDF (que j'avais installer puis désinstaller) or je veux utiliser FPDF que j'inclus dans mon "default_pdf.php"

    Avez vous une idée de pourquoi il prend phocaPDF par défaut ?

    Commentaire


    • #3
      Re : Création d'une vue PDF pour un composant

      Bon, je continue a poster mon avancé dans mes recherches (ça peut aider quelqu'un on sait jamais ) j'ai trouver un reste du composant PhocaPDF que j'ai retirer (dans /librairies/joomla/document c'est le dossier PDF qui est créer par phocaPDF.

      Maintenant, ma page s'affiche avec le code brut du PDF générer par FPDF.

      Par contre, il faut certainement que je trouve une librairie PDF qui s'intègre à Joomla comme phocaPDF.

      Si quelqu'un peut me confirmer ou bien même en a une sous le coude je suis preneur

      Commentaire


      • #4
        Re : Création d'une vue PDF pour un composant

        un petit up, j'ai utilisé maintenant la classe TCPDF, pour avoir vu sur plusieurs sujet que c'est la plus adapté.

        par contre IMPOSSIBLE de générer un PDF, je n'ai que le code brut qui s'affiche, pourquoi le PDF ne se génère pas ?

        à l'aide s'il vous plait !!

        Commentaire


        • #5
          Re : Création d'une vue PDF pour un composant

          Salut,
          j'avais aussi pas mal galéré pour généré avec TCPDF mais j'ai fait quelques chose au final, donc dans ta vue tu met un lien cliquable genre : "Généré un pdf" qui appeller une task du controller puis dans le modele appellé par le controlleur t'appeller la méthode "exporterpdf()" que je te met ci dessous il faut passer le mode d'ouverture en parametre (Dans navigateur, telechargement ...) :

          Code:
          //Le système d'extraction pdf, et la redefinition de la classe TCPDF pour avoir un entete et pied de pdf Customizé
          	function exporterpdf($mode) {
          		jimport('tcpdf.tcpdf');
          //toute l'initialisation qui va bien :D
          		$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
          		
          		$pdf->SetCreator(PDF_CREATOR);
          		$pdf->SetAuthor('ESCUDIE Pierre');
          		$pdf->SetTitle('Extraction');
          		$pdf->SetSubject('Extraction des Pangolin sud africain de jupiter croisé par venus de la base');
          		$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
          		$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
          		$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
          		$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
          		$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
          		$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
          		$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
          		$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
          		$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
          		$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
          		$pdf->SetFont('helvetica','',10);
          		$pdf->AddPage();
          		$html = "" ;
          		//ICI
          		//TU BLINDE 
          		//TA VARIABLE 
          		//$html comme sa : $html = $html."cequetuveutrajouteralasuite"
          		//Ce que tu peut rajouter a la suite cest du code pur html donc tu peut faire du tableau des liens
          		//Hypertexte, des images ...
          		//Ci dessous tu ecrit dans ta variable pdf le contenu html
          		$pdf->writeHTML($html, true, 0, true, 0,"C");
          		//Ici tu prepare ta sortie
          		$pdf->Output('test.pdf', $mode);
          		//Et ici sa lance le telechargement du pdf sachant que si c'est la vue dans le navigateur ou au telechargement sa ce gere par la variable mode Qui est passé en parametre de la fonction du modele exporterpdf()
          		echo $pdf ;
          	}
            }
          	
          	jimport('tcpdf.tcpdf');
          	class MYPDF extends TCPDF {
          		//Page header
          		public function Header() 		
          			// Logo
          			$image_file = K_PATH_IMAGES.'TonLOGO.jpg';
          			$this->Image($image_file, 5, 5, 30, 15, 'JPG', '', 'T', true, 300, '', false, false, 0, false, false, false);
          			// Set font
          			$this->SetFont('helvetica', 'B', 20);
          			// Title
          			$this->Cell(0, 15, 'Un titre je croit', 0, false, 'C', 0, '', 0, false, 'T', 'M');
          		}
          
          		// Page footer
          		public function Footer() {
          			// Position at 15 mm from bottom
          			$this->SetY(-15);
          			// Set font
          			$this->SetFont('helvetica', 'I', 8);
          			// Page number
          			$this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
          		}
          	}
          voila mon code, j'en avais chi** mais sa marchais

          Commentaire


          • #6
            Re : Création d'une vue PDF pour un composant

            Salut pierrelesek,

            Merci pour ta réponse, en fait, c'est ma faute, je ne suis pas revenu mettre un post, mais j'ai trouvé la solution.
            j'ai juste rajouté dans ma fonction display du view.pdf.php les lignes :

            Code PHP:
            $document     = & JFactory::getDocument();
            $document->setMimeEncoding('application/pdf'); 
            Et depuis, tout fonctionne à merveille :-) (hormis la qualité des images mais bon ceci est un autre problème)

            Commentaire


            • #7
              Re : Création d'une vue PDF pour un composant

              J'aimerai bien savoir la manière dont tu as procédé qui à l'air d'être plus propre d'un point de vue MVC
              Et plus sympa à mettre en oeuvre car ma variable qui contient tout le html sa marche bien mais c'est chaud à faire proprement

              Commentaire


              • #8
                Re : Création d'une vue PDF pour un composant

                bonjour
                j'ai aussi créer ce message sur le même sujet
                si vous pouvez m'y aider ...

                aussi dans le forum fpdf ils préconise d'utiliser un <form> avec la méthode POST mais celle-ci ne semble pas marcher dans un composant MVC ...

                LJ
                mon avatar : http://www.ingall-niger.org

                Commentaire

                Annonce

                Réduire
                Aucune annonce pour le moment.

                Partenaire de l'association

                Réduire

                Hébergeur Web PlanetHoster
                Travaille ...
                X