1,28 → 1,23 |
<?php |
/** |
* Classe PdfExport, réalise des exportations pdf des fiches de taxons. |
* Les fonctionnalités proposées sont l'export de toutes les parties de la fiche pdf |
* Les fonctionnalités proposées sont l'export de toutes les parties de la fiche pdf |
* ou bien des parties choisies. |
* (voir le squelette fiche_pdf_lien.tpl.html pour le formulaire dans le module fiche.) |
* |
* |
* manuel wkhtmltopdf : http://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltopdf_0.10.0_rc2-doc.html |
* pour changer de librairie : changer la fonction transformerHtmlEnPdf() |
* |
* @category php 5.2 |
* @category php 5.2 |
* @package eflore-consultation |
* @author Mathilde Salthun-Lassalle <mathilde@tela-botanica.org> |
* @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 |
* @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$ |
* |
* |
*/ |
|
|
class PdfExport extends aControleur { |
|
|
private $Conteneur; |
private $parametres = array(); |
private $chemin_pdf; |
41,7 → 36,6 |
private $Stat; |
private $Biblio; |
|
|
public function initialiser() { |
spl_autoload_register(array($this, 'chargerClassesOnglets')); |
$this->capturerParametres(); |
57,34 → 51,33 |
$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 chargerClassesOnglets($classe) { |
$base = dirname(__FILE__).DS; |
$cheminFormateurs = $base.'../fiche/formateurs'.DS; |
$dossiers = array($base, $cheminFormateurs); |
foreach ($dossiers as $chemin) { |
$fichierATester = $chemin.$classe.'.php'; |
if (file_exists($fichierATester)) { |
include_once $fichierATester; |
return null; |
} |
} |
|
private function chargerClassesOnglets($classe) { |
$base = dirname(__FILE__).DS; |
$cheminFormateurs = $base.'../fiche/formateurs'.DS; |
$dossiers = array($base, $cheminFormateurs); |
foreach ($dossiers as $chemin) { |
$fichierATester = $chemin.$classe.'.php'; |
if (file_exists($fichierATester)) { |
include_once $fichierATester; |
return null; |
} |
} |
|
} |
|
private function getNomRetenu() { |
$nom_retenu = $this->conteneur->getNomCourant()->getNomRetenu()->get('nom_sci'); |
return $nom_retenu; |
} |
|
|
private function getNomRetenuHTML() { |
$nom_retenu = '<span class="italique">' |
.$this->conteneur->getNomCourant()->getNomRetenu()->get('nom_sci') |
.'</span> '.$this->conteneur->getNomCourant()->getNomRetenu()->get('auteur'); |
.$this->conteneur->getNomCourant()->getNomRetenu()->get('nom_sci') |
.'</span> '.$this->conteneur->getNomCourant()->getNomRetenu()->get('auteur'); |
return $nom_retenu; |
} |
|
|
private function getNomFichierValide(){ |
$nom_retenu = $this->conteneur->getNomCourant()->getNomRetenu()->get('nom_sci'); |
$nom_retenu = str_replace(' ','_',$nom_retenu ); |
91,7 → 84,7 |
$nom_retenu = preg_replace('/[\(\)\.\[\]]/','',$nom_retenu ); |
return $nom_retenu; |
} |
|
|
private function capturerParametres() { |
if (isset($_GET['num_nom'])) { |
$this->parametres['num_nom'] = $_GET['num_nom']; |
105,7 → 98,6 |
if (isset($_GET['referentiel'])) { |
$this->parametres['referentiel'] = $_GET['referentiel']; |
} |
|
if (isset($_GET['niveau'])) { |
Registre::set('parametres.niveau', $_GET['niveau']); |
} |
113,35 → 105,32 |
$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', |
'repartition', 'nomenclature'); |
$this->blocs = array('description');//, 'ecologie', 'ethnobotanique', |
//'statuts', 'illustrations', 'bibliographie', |
//'repartition', 'nomenclature'); |
} |
} |
|
|
public function executerActionParDefaut() { |
$this->executerPdfExport(); |
} |
|
|
public function executerPdfExport(){ |
|
$this->capturerParametresFormulaire(); |
$donnees = $this->obtenirDonnees(); |
$this->construireHtml($donnees); |
if ($this->transformerHtmlEnPdf()) { |
$this->envoyerPdfAuNavigateur(); |
} |
else { |
die('erreur de generation du fichier PDF'); |
} |
$this->capturerParametresFormulaire(); |
$donnees = $this->obtenirDonnees(); |
$this->construireHtml($donnees); |
if ($this->transformerHtmlEnPdf()) { |
$this->envoyerPdfAuNavigateur(); |
} else { |
die('Erreur de generation du fichier PDF'); |
} |
} |
|
|
|
private function construireHtml($donnees) { |
$this->html = $this->getVue('pdf_header', $donnees); |
foreach ($this->blocs as $bloc) { |
149,22 → 138,21 |
} |
$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-----------------------------------++ |
|
|
//+-------------------------------------récupération des données---------------------------------------------+ |
private function obtenirDonnees() { |
$donnees = array(); |
$version = $this->Nomen->obtenirVersionDonnees(); |
$donnees['donnees_pdf'] = array('nom' => $this->getNomRetenuHTML(), |
'chemin_css' => Config::get('url_css_pdf'), |
'version' => $version['version']); |
$donnees['donnees_pdf'] = array( |
'nom' => $this->getNomRetenuHTML(), |
'chemin_css' => Config::get('url_css_pdf'), |
'version' => $version['version']); |
$donnees['description'] = $this->Desc->obtenirDonneesExport(); |
$donnees['ecologie'] = $this->Ecolo->obtenirDonneesExport(); |
$donnees['statuts'] = $this->Stat->obtenirDonnees(); |
176,10 → 164,8 |
$donnees['premier'] = $this->blocs[0];// pour page-break : éviter 1ere page vide si bloc trop long |
return $donnees; |
} |
|
//++ ------------------------------------------------export en pdf--------------------------------------++ |
|
|
//+------------------------------------------------export en pdf---------------------------------------------+ |
private function envoyerPdfAuNavigateur() { |
$nom_fichier = $this->getNomFichierValide(); |
header('Content-type: application/pdf'); |
188,9 → 174,7 |
unlink($this->fichier_html); |
unlink($this->fichier_pdf); |
} |
|
|
|
|
//version WKHTMLtoPDF en ligne de commande |
private function transformerHtmlEnPdf() { |
$nom_fichier = $this->getNomFichierValide(); |