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

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

Quelques options complémentaires pour l'impression PDF.

Et la possibilité d'éditer d'autres types de documents (carte adhérent par exemple).

'mon_diplome' nom peut-être mal choisi vu qu'il n'y a pas de limite au type de document ?

'ma_paperasse' ?

  • Property svn:eol-style set to native
  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 4.5 KB
Line 
1<?php
2
3// balise/mon_diplome_pdf.php
4
5// $LastChangedRevision: 28616 $
6// $LastChangedBy: paladin@quesaco.org $
7// $LastChangedDate: 2009-05-13 05:47:24 +0000 (Wed, 13 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                                        $result[$key] = trim(trim($val, "\"'"));
71                                }
72                        }
73                }
74                $queries = $result;
75
76                // complète par les valeurs par défaut
77                foreach($plom_options as $key => $val)
78                {
79                        if(!isset($queries[$key])) {
80                                $queries[$key] = $val;
81                        }
82                }
83               
84                // sauf listing des diplômes,
85                // c'est uniquement celui du connecté qui est demandé
86                if(!$queries['id_auteur']) {
87                        $queries['id_auteur'] = $connect_id_auteur;
88                }
89
90                $queries['nom'] =
91                        ($ii = $GLOBALS['auteur_session']['nom'])
92                        ? ucwords($ii)
93                        : _T('plom:inconnu')
94                        ;
95
96                // calcul des chemins (paths)
97                if($queries['appliquer_fond'] == 'oui')
98                {
99                        // le modele de fond est (doit être) un png
100                        $calque = 'modele_fond';
101                        $ext = ".png";
102                       
103                        $queries[$calque] =
104                                ($f = plom_chemin_calque ($calque, $ext, $queries))
105                                ? $f
106                                : plom_alert_and_die (_T('plom:erreur_fichier_s_manquant', array('s' => $queries[$calque].$ext)))
107                                ;
108                }
109                else {
110                        $queries['modele_fond'] = null;
111                }
112
113                $calque = 'modele_texte';
114                $ext = ".html";
115                       
116                $queries[$calque] =
117                                ($f = plom_chemin_calque ($calque, $ext, $queries))
118                                ? $queries[$calque]
119                                : plom_alert_and_die (_T('plom:erreur_fichier_s_manquant', array('s' => $queries[$calque].$ext)))
120                                ;
121               
122               
123                $contexte = array(
124                        'msg' => "Un message a faire passer "
125                        , 'fond' => "modeles/mon_diplome"
126                        , 'nom' => $queries['nom']
127                        , 'diplome_ligne_1' => _T('plom:diplome_ligne_1')
128                        , 'diplome_etudes_sup' => _T('plom:diplome_etudes_sup')
129                        , 'diplome_ligne_2' => _T('plom:diplome_ligne_2')
130                        , 'diplome_ligne_3' => _T('plom:diplome_ligne_3')
131                        , 'diplome_ligne_4' => _T('plom:diplome_ligne_4')
132                );
133                               
134                // construction à partir du squelette
135                $content = recuperer_fond("modeles/" . $queries['modele_texte'], $contexte);
136               
137                include_spip("html2pdf/html2pdf.class");
138                include_spip('inc/texte');
139               
140foreach($queries as $key => $val) { spip_log("B: $key = $val"); }               
141               
142                $html2pdf = new HTML2PDF(
143                                                                 (($queries['orientation'] == "portrait") ? 'P' : 'L')
144                                                                 , $queries['format']
145                                                                 , $GLOBALS['auteur_session']['lang']
146                                                                 , array(0, 0, 0, 0) // marges
147                                                                 );
148               
149               
150                // afficher la page en entier
151                $html2pdf->pdf->SetDisplayMode($queries['SetDisplayMode']);
152                $html2pdf->pdf->SetAutoPageBreak($queries['SetAutoPageBreak'], $queries['SetAutoPageBreakMargin']);
153                $html2pdf->pdf->SetAuthor($queries['author'], true); // titre du site
154                $html2pdf->pdf->SetCreator($queries['creator'], true);
155                $html2pdf->pdf->SetMargins($queries['MarginLeft'], $queries['MarginTop']);
156                $html2pdf->pdf->SetSubject(html_entity_decode($queries['subject']), false);
157                $html2pdf->pdf->SetTitle(html_entity_decode($queries['title']), false);
158               
159                // fond de page
160                if($queries['modele_fond']) {
161                        $html2pdf->background = array('img' => $queries['modele_fond'], 'posX' => 0, 'posY' => 0
162                                                                        , 'width' => "100%" // ou int en mm
163                                                                        ); 
164                }
165               
166                // conversion
167                $html2pdf->WriteHTML($content, false);
168       
169                // Récupérer le résultat
170                $result = $html2pdf->Output();
171               
172                // Envoyer
173                header("Content-type: application/pdf");
174                header("Content-Disposition: attachment; filename=" . $queries['modele_texte'] . ".pdf");
175                echo ($result);
176               
177                // Fin
178                exit;
179        }
180        return (null);
181}
182
183
184
185?>
Note: See TracBrowser for help on using the repository browser.