oct
7
2010

Utiliser une Library Externe : Html2Pdf

Aujourd’hui nous allons voir comment implanter HTML2PDF à Zend. Cet article m’a été demandé par quelques personnes ces derniers jours et justement, je pensais en parler.

HTML2PDF ainsi que d’autres libraries PHP disponibles sur internet comme PHPThumb n’utilisent pas la convention PEAR. Leur inclusion ainsi que leur utilisation ne s’effectuera pas comme les libraries utilisant la convention PEAR.

Afin d’utiliser facilement la library html2pdf, nous allons passer par une aide d’action Zend, permettant de faire la transition (Vous pouvez faire une aide de vue ou autre chose utilisant la même logique).

Pour se faire, nous allons créer une nouvelle classe PHP dans notre library perso App. Elle s’appellera App_Helper_Html2Pdf.

 PHP |  copy code |? 
01
/**
02
 * Ligne nous permettant d'utiliser la classe HTML2PDF dans souci avec Zend
03
 */
04
require_once LIBRARY_PATH.'/html2pdf/html2pdf.class.php';
05
 
06
class App_Helper_Html2Pdf extends Zend_Controller_Action_Helper_Abstract{
07
 
08
    /**
09
     * @var Zend_Loader_PluginLoader
10
     */
11
    public $pluginLoader;
12
 
13
    /**
14
     * Constructeur: initialisee le chargeur de classes d'aides ou plugins
15
     *
16
     * @return void
17
     */
18
    public function __construct()
19
    {
20
        $this->pluginLoader = new Zend_Loader_PluginLoader();
21
    }
22
 
23
    /**
24
     * Constructeur
25
     *
26
     * @param string sens portrait ou landscape
27
     * @param string format A4, A5, ...
28
     * @param string langue : fr, en, it...
29
     * @param boolean $unicode TRUE means that the input text is unicode (default = true)
30
     * @param  String $encoding charset encoding; default is UTF-8
31
     * @param array marges par defaut, dans l'ordre (left, top, right, bottom)
32
     * @return null
33
     */
34
    public function instanceClass($sens = 'P', $format = 'A4', $langue='fr', $unicode=true, $encoding='UTF-8', $marges = array(5, 5, 5, 8)){
35
        $html2pdf = new HTML2PDF($sens, $format, $langue, $unicode, $encoding, $marges);
36
 
37
        return $html2pdf;
38
    }
39
 
40
    /**
41
     * Fonction permettant d'appeler directement instanceClass
42
     */
43
    public function direct($sens = 'P', $format = 'A4', $langue='fr', $unicode=true, $encoding='UTF-8', $marges = array(5, 5, 5, 8)){
44
        return $this->instanceClass($sens, $format, $langue, $unicode, $encoding, $marges);
45
    }
46
}

Pour que Html2Pdf marche ici, nous utilisons, à la première ligne de notre fichier, un require_once pointant sur la classe principale. De là, nous sommes tranquille pour la suite, PHP va se débrouiller.

Pour utiliser votre aide d’action, n’oubliez pas de rajouter la partie suivante dans votre Bootstrap.

 PHP |  copy code |? 
1
protected function _initHelpers(){
2
 Zend_Controller_Action_HelperBroker::addPrefix('App_Helper');
3
}

Pour finir, pour récupérer votre objet PDF, vous n’aurez plus qu’à faire ceci dans un controller et vous pourrez manipuler votre objet Html2Pdf :
 PHP |  copy code |? 
1
$html2pdf = $this->_helper->Html2Pdf('P','A4','fr', false, 'ISO-8859-15');

Maintenant vous savez comment rajouter une library externe n’utilisant pas la convention PEAR au sein d’un projet Zend. Malheureusement, avec l’arrivée de ZF2 et de PHP5.3 avec les namespaces, cela risque encore de changer.

Articles Connexes

A propos de l'Auteur: Benjamin Besse

Je suis Analyste Développeur chez Goomeo et je suis passioné par tout ce qui touche aux technologies du Web. J'ai commencé par apprendre l'utilisation du Framework Zend et j'ai continué naturellement via Android. Le tout seulement avec les bases acquises en DUT et Licence professionnelle Informatique.

1 Commentaire Donnez votre avis

  • bravo benjamin j’ai s’inspirer beaucoup sur tes codes , je suis un jeune marocain j’ai le meme processus que toi presque , moi aussi je suis très intéressé par le développement web et surtout avec zend framework et php5 je suis analyste développeur chez WebConsulting en meme temps pour cette année j’ai une licence professionnelle en informatique à l’université des sciences de meknes ,

    je vous souhaite une grande réussite sur ce domaine

    cordialement

Laisser un commentaire

Mots-Clefs