source: spip-zone/_plugins_/_stable_/mon_diplome/balise/mon_diplome_pdf.php @ 28563

Last change on this file since 28563 was 28563, checked in by paladin@…, 12 years ago

les deux balises pour éditer son diplôme (voir http://www.quesaco.org/Mon-diplome-SPIP pour une première approche de la documentation: en gros on peut éditer son diplôme en ligne au format PDF)

  • Property svn:eol-style set to native
  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 4.2 KB
Line 
1<?php
2
3// balise/mon_diplome_pdf.php
4
5// $LastChangedRevision: 28563 $
6// $LastChangedBy: paladin@quesaco.org $
7// $LastChangedDate: 2009-05-10 18:05:39 +0000 (Sun, 10 May 2009) $
8
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11function plom_alert_and_die ($msg) {
12        header('Content-Type: text/html; charset=utf-8');
13        die(utf8_encode(html_entity_decode($msg)));
14}
15
16/**
17 *Donne le chemin (path) du calque
18 *@return string
19 */
20function plom_chemin_calque ($calque, $ext = "html", $options = null) {
21       
22        global $plom_options;
23       
24        $calque =
25                ($options && ($f = $options[$calque]))
26                ? $f
27                : $plom_options[$calque]
28                ;
29        $calque = "modeles/" . $calque . $ext;
30       
31        $result = find_in_path($calque);
32       
33        return ($result);
34}
35
36
37function balise_MON_DIPLOME_PDF ($p)
38{
39        return(calculer_balise_dynamique($p, 'MON_DIPLOME_PDF', array()));
40}
41
42function balise_MON_DIPLOME_PDF_stat ($args, $filtres)
43{
44        // la balise ne gère pas de filtre
45        // si filtre présent, les $args ne sont pas reçus
46        return (array(rawurlencode(serialize($args))));
47}
48
49function balise_MON_DIPLOME_PDF_dyn ($args)
50{
51        global $plom_options;
52       
53        $connect_id_auteur = $GLOBALS['auteur_session']['id_auteur'];
54       
55       
56        if($connect_id_auteur)
57        {
58               
59                $queries = unserialize(rawurldecode($args));
60               
61                $result = array();
62               
63                // prendre les paramètres transmis dans le squelette
64                foreach($queries as $query)
65                {
66                        if(strpos($query, "=")) {
67                                list($key, $val) = explode("=", $query);
68                                if(array_key_exists($key, $plom_options))
69                                {
70                                        $val = trim($val, "\"'");
71                                        $result[$key] = $val;
72                                }
73                        }
74                }
75                $queries = $result;
76
77                // complète par les valeurs par défaut
78                foreach($plom_options as $key => $val)
79                {
80                        if(!isset($queries[$key])) {
81                                $queries[$key] = $val;
82                        }
83                }
84               
85                // sauf listing des diplômes,
86                // c'est uniquement celui du connecté qui est demandé
87                if(!$queries['id_auteur']) {
88                        $queries['id_auteur'] = $connect_id_auteur;
89                }
90
91                $queries['nom'] =
92                        ($ii = $GLOBALS['auteur_session']['nom'])
93                        ? ucwords($ii)
94                        : _T('plom:inconnu')
95                        ;
96
97                // calcul des chemins (paths)
98                if($queries['appliquer_fond'] == 'oui')
99                {
100                        // le modele de fond est (doit être) un png
101                        $calque = 'modele_fond';
102                        $ext = ".png";
103                       
104                        $queries[$calque] =
105                                ($f = plom_chemin_calque ($calque, $ext, $queries))
106                                ? $f
107                                : plom_alert_and_die (_T('plom:erreur_fichier_s_manquant', array('s' => $queries[$calque].$ext)))
108                                ;
109                }
110               
111                $calque = 'modele_texte';
112                $ext = ".html";
113                       
114                $queries[$calque] =
115                                ($f = plom_chemin_calque ($calque, $ext, $queries))
116                                ? $f
117                                : plom_alert_and_die (_T('plom:erreur_fichier_s_manquant', array('s' => $queries[$calque].$ext)))
118                                ;
119               
120               
121                $contexte = array(
122                        'msg' => "Un message a faire passer "
123                        , 'fond' => "modeles/mon_diplome"
124                        , 'nom' => $queries['nom']
125                        , 'diplome_ligne_1' => _T('plom:diplome_ligne_1')
126                        , 'diplome_etudes_sup' => _T('plom:diplome_etudes_sup')
127                        , 'diplome_ligne_2' => _T('plom:diplome_ligne_2')
128                        , 'diplome_ligne_3' => _T('plom:diplome_ligne_3')
129                        , 'diplome_ligne_4' => _T('plom:diplome_ligne_4')
130                );
131                               
132                // construction à partir du squelette
133                $content = recuperer_fond("modeles/mon_diplome", $contexte);
134               
135                include_spip("html2pdf/html2pdf.class");
136               
137                $html2pdf = new HTML2PDF(
138                                                                 (($queries['orientation'] == "paysage") ? 'P' : 'L')
139                                                                 , $queries['format']
140                                                                 , $GLOBALS['auteur_session']['lang']
141                                                                 , array(0, 0, 0, 0) // marges
142                                                                 );
143               
144               
145                // afficher la page en entier
146                $html2pdf->pdf->SetDisplayMode('fullpage');
147                $html2pdf->pdf->SetAutoPageBreak(false, 0);
148                $html2pdf->pdf->SetAuthor($queries['author'], true); // titre du site
149                $html2pdf->pdf->SetCreator($queries['creator'], true);
150                $html2pdf->pdf->SetMargins(0, 0);
151                $html2pdf->pdf->SetSubject("Votre diplôme", true);
152                $html2pdf->pdf->SetTitle("Votre diplôme", true);
153               
154                $fond = find_in_path('modeles/mon_diplome.png');
155               
156                // fond de page
157                $html2pdf->background = array('img' => $fond, 'posX' => 0, 'posY' => 0
158                                                                        , 'width' => 297 // en mm !
159                                                                        ); 
160       
161               
162                // conversion
163                $html2pdf->WriteHTML($content, false);
164       
165                // Récupérer le résultat
166                $result = $html2pdf->Output();
167               
168                // Envoyer
169                header("Content-type: application/pdf");
170                header('Content-Disposition: attachment; filename=mon_diplome.pdf');
171                echo ($result);
172               
173                // Fin
174                exit;
175        }
176        return (null);
177}
178
179
180
181?>
Note: See TracBrowser for help on using the repository browser.