Rev 664 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** Classe PdfExport, réalise des exportations pdf des fiches de taxons.** @category php 5.2* @package eflore-consultation* @author Mathilde Salthun-Lassalle <mathilde@tela-botanica.org>* @copyright 2012 Tela-Botanica* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL* @version $Id$** manuel wkhtmltopdf : http://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltopdf_0.10.0_rc2-doc.html* pour changer de librairie : changer la fonction transformerHtmlEnPdf()*/require_once( Config::get('chemin_modules').'fiche/formateurs/Description.php');require_once( Config::get('chemin_modules').'fiche/formateurs/Ecologie.php');require_once( Config::get('chemin_modules').'fiche/formateurs/Classification.php');require_once( Config::get('chemin_modules').'fiche/formateurs/Bibliographie.php');require_once( Config::get('chemin_modules').'fiche/formateurs/Ethnobotanique.php');require_once( Config::get('chemin_modules').'fiche/formateurs/Illustrations.php');require_once( Config::get('chemin_modules').'fiche/formateurs/Nomenclature.php');require_once( Config::get('chemin_modules').'fiche/formateurs/Repartition.php');require_once( Config::get('chemin_modules').'fiche/formateurs/Statut.php');class PdfExport extends aControleur {private $Conteneur;private $parametres = array();private $chemin_pdf;private $html;private $wkhtml;private $piedepage;private $fichier_pdf;private $blocs = array();private $Desc;private $Ecolo;private $Ethno;private $Classi;private $Illus;private $Nomen;private $Reparti;private $Stat;private $Biblio;public function initialiser() {$this->capturerParametres();$this->conteneur = new Conteneur($this->parametres);$this->chemin_pdf = Config::get('dossier_pdf');$this->wkhtml = Config::get('WKHTMLTOPDF');$this->Desc = new Description($this->conteneur);$this->Ecolo= new Ecologie($this->conteneur);$this->Ethno= new Ethnobotanique($this->conteneur);$this->Classi= new Classification($this->conteneur);$this->Illus = new Illustrations($this->conteneur);$this->Nomen = new Nomenclature($this->conteneur);$this->Stat = new Statut($this->conteneur);$this->Biblio= new Bibliographie($this->conteneur);$this->Reparti= new Repartition($this->conteneur);$this->piedepage = Config::get('chemin_modules').'pdf_export/squelettes/footer.html';}private function capturerParametres() {if (isset($_GET['num_nom'])) {$this->parametres['num_nom'] = $_GET['num_nom'];}if (isset($_GET['nom'])) {$this->parametres['nom'] = $_GET['nom'];}if (isset($_GET['type_nom'])) {$this->parametres['type_nom'] = $_GET['type_nom'];}if (isset($_GET['referentiel'])) {$this->parametres['referentiel'] = $_GET['referentiel'];}if (isset($_GET['niveau'])) {Registre::set('parametres.niveau', $_GET['niveau']);}if (isset($_GET['onglet'])) {$this->onglet = $_GET['onglet'];}}private function capturerParametresFormulaire() {if (!empty($_POST['bloc'])) {$this->blocs = $_POST['bloc'];} else {$this->blocs = array('description', 'ecologie', 'ethnobotanique','statuts', 'illustrations', 'bibliographie','classification', 'repartition', 'nomenclature');}}public function executerActionParDefaut() {$this->executerPdfExport();}public function executerPdfExport(){$this->capturerParametresFormulaire();$donnees = $this->obtenirDonnees();$this->construireHtml($donnees);$this->transformerHtmlEnPdf();$this->envoyerPdfAuNavigateur();}private function construireHtml($donnees) {$this->html = $this->getVue('pdf_header.tpl.html', $donnees);foreach ($this->blocs as $bloc) {$this->ajouterHtml($bloc, $donnees);}$this->html .= '</body></html>';}private function ajouterHtml($bloc, $donnees) {if (!empty($donnees[$bloc])) {$this->html .= $this->getVue('pdf_'.$bloc, $donnees);}}//++-------------------------------------récupération des données-----------------------------------++private function obtenirDonnees() {$donnees = array();$donnees['donnees']['nom'] = $this->parametres['nom'];$donnees['description'] = $this->Desc->obtenirDonnees();$donnees['ecologie'] = $this->Ecolo->obtenirDonnees();$donnees['statuts'] = $this->Stat->obtenirDonnees();$donnees['ethnobotanique'] = $this->Ethno->obtenirDonnees();$donnees['classification'] = $this->Classi->obtenirDonnees();$donnees['illustrations'] = $this->Illus->obtenirDonnees();$donnees['nomenclature'] = $this->Nomen->obtenirDonnees();$donnees['repartition'] = $this->Reparti->obtenirDonnees();$donnees['repartition']['min'] = $this->Reparti->getBloc();$donnees['bibliographie'] = $this->Biblio->obtenirDonnees();return $donnees;}//++ ------------------------------------------------export en pdf--------------------------------------++private function envoyerPdfAuNavigateur() {header('Content-type: application/pdf');header('Content-Disposition: attachment; filename="'.$this->parametres['nom'].'.pdf"');readfile($this->fichier_pdf);}//version WKHTMLtoPDF en ligne de commandeprivate function transformerHtmlEnPdf() {//il peut y avoir des pdfs differents pour une même fiche (on peut choisir ses parties)$time = $_SERVER['REQUEST_TIME'] ;$fichier_html = $this->chemin_pdf.''.str_replace(' ','_',$this->parametres['nom']).'-'.$time.'.html';$this->fichier_pdf = $this->chemin_pdf.''.str_replace(' ','_',$this->parametres['nom']).'-'.$time.'.pdf';$nom = $this->parametres['nom'];file_put_contents($fichier_html, $this->html);$commande =" {$this->wkhtml} --replace 'nom' '$nom' --footer-html '{$this->piedepage}' --encoding utf-8 $fichier_html $this->fichier_pdf 2>&1";$debug = exec($commande);//echo $debug;}}?>