Changeset 65475 in spip-zone


Ignore:
Timestamp:
Sep 3, 2012, 2:13:46 PM (7 years ago)
Author:
cedric@…
Message:

indentation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spipdf/spipdf.php

    r65429 r65475  
    1818// Options pour les marges des PDF, valables seulement pour la librairie mPDF
    1919// définissez vos options par défaut directement dans votre mes_options.php
    20 if (!defined('_SPIPDF_FORMAT')) {
     20if (!defined('_SPIPDF_FORMAT')){
    2121        define('_SPIPDF_FORMAT', 'A4');
    2222}
    23 if (!defined('_SPIPDF_MARGIN_TOP')) {
     23if (!defined('_SPIPDF_MARGIN_TOP')){
    2424        define('_SPIPDF_MARGIN_TOP', 20);
    2525}
    26 if (!defined('_SPIPDF_MARGIN_RIGHT')) {
     26if (!defined('_SPIPDF_MARGIN_RIGHT')){
    2727        define('_SPIPDF_MARGIN_RIGHT', 20);
    2828}
    29 if (!defined('_SPIPDF_MARGIN_BOTTOM')) {
     29if (!defined('_SPIPDF_MARGIN_BOTTOM')){
    3030        define('_SPIPDF_MARGIN_BOTTOM', 15);
    3131}
    32 if (!defined('_SPIPDF_MARGIN_LEFT')) {
     32if (!defined('_SPIPDF_MARGIN_LEFT')){
    3333        define('_SPIPDF_MARGIN_LEFT', 15);
    3434}
    35 if (!defined('_SPIPDF_MARGIN_HEADER')) {
     35if (!defined('_SPIPDF_MARGIN_HEADER')){
    3636        define('_SPIPDF_MARGIN_HEADER', 2);
    3737}
    38 if (!defined('_SPIPDF_MARGIN_FOOTER')) {
     38if (!defined('_SPIPDF_MARGIN_FOOTER')){
    3939        define('_SPIPDF_MARGIN_FOOTER', 2);
    4040}
    4141
    4242// Charset (qui peut être défini dans un fichier d'options
    43 if (!defined('SPIPDF_CHARSET')) {
     43if (!defined('SPIPDF_CHARSET')){
    4444        define('SPIPDF_CHARSET', 'UTF-8');
    4545        //define('SPIPDF_CHARSET', 'ISO-8859-15');
     
    4747
    4848// utilisé pour le constructeur de HTML2PDF
    49 if(SPIPDF_CHARSET=='UTF-8') {
     49if (SPIPDF_CHARSET=='UTF-8'){
    5050        define('SPIPDF_UNICODE', true);
    5151} else {
     
    5454
    5555// les librairies necessaires doivent-être dans "lib". A la racine ou dans le répertoire du plugin
    56 if (!defined('_DIR_LIB')) {
    57     define('_DIR_LIB', _DIR_RACINE . 'lib/');
     56if (!defined('_DIR_LIB')){
     57        define('_DIR_LIB', _DIR_RACINE . 'lib/');
    5858}
    5959
    6060// pour les function unicode2charset
    61 include_spip('inc/charsets') ;
     61include_spip('inc/charsets');
    6262
    6363// repris dans le plugin article_pdf => a modifier
    6464// http://zone.spip.org/trac/spip-zone/browser/_plugins_/article_pdf
    65 function spipdf_first_clean($texte) {
    66 
    67                 // supprimer les remarques HTML (du Couteau Suisse ?)
    68                 $texte = preg_replace(',<!-- .* -->,msU', '', $texte);
    69                
    70                 $trans = array();
    71                 $trans["<br />\n"] = '<BR>'; // Pour éviter que le \n ne se tranforme en espace dans les <DIV class=spip_code> (TT, tag SPIP : code)
    72 
    73                 // gestion d'un encodage latin1
    74                 if(SPIPDF_CHARSET=='ISO-8859-15' || SPIPDF_CHARSET=='iso-8859-15') {
    75                         $trans['&#176;'] = '°';
    76                         $trans["&#339;"] = 'oe';
    77                         $trans["&#8211;"] = '-';
    78                         $trans["&#8216;"] = '\'';
    79                         $trans["&#8217;"] = '\'';
    80                         $trans["&#8220;"] = '"';
    81                         $trans["&#8221;"] = '"';
    82                         $trans["&#8230;"] = '...';
    83                         $trans["&#8364;"] = 'Euros';
    84                         $trans["&ucirc;"] = "û";
    85                         $trans['->'] = '-»';
    86                         $trans['<-'] = '«-';
    87                         $trans['&mdash;'] = '-';
    88                         $trans['&deg;']='°';
    89                         $trans['œ']='oe';
    90                         $trans['Œ']='OE';
    91                         $trans['…']='...';
    92                         $trans['&euro;']='Euros';
    93                         $trans['€']='Euros';
    94                         $trans['&copy;'] ='©';
    95                 }
    96                 // pas d'insécable
    97                 $trans['&nbsp;'] = ' ';
    98 
    99                 // certains titles font paniquer l'analyse
    100                 // TODO : a peaufiner car ils sont necessaires pour les signets
    101                 // <bookmark title="Compatibilité" level="0" ></bookmark>
    102                 // http://wiki.spipu.net/doku.php?id=html2pdf:fr:v4:bookmark
    103                 //$texte = preg_replace(',title=".*",msU', 'title=""', $texte);
    104 
    105                 $texte = strtr($texte, $trans);
    106                 if(SPIPDF_CHARSET=='UTF-8') {
    107                         $texte = charset2unicode($texte);
    108                 } else {
    109                         $texte = unicode2charset(charset2unicode($texte), SPIPDF_CHARSET); // Repasser tout dans le charset demandé
    110         }
    111                
    112                 // Décoder les codes HTML dans le charset final
    113                 $texte = html_entity_decode($texte, ENT_NOQUOTES, SPIPDF_CHARSET);
    114                
    115                 return $texte;
    116 }
    117 
    118 
    119 function spipdf_nettoyer_html($html,$params_pdf=array()) {
     65function spipdf_first_clean($texte){
     66
     67        // supprimer les remarques HTML (du Couteau Suisse ?)
     68        $texte = preg_replace(',<!-- .* -->,msU', '', $texte);
     69
     70        $trans = array();
     71        $trans["<br />\n"] = '<BR>'; // Pour éviter que le \n ne se tranforme en espace dans les <DIV class=spip_code> (TT, tag SPIP : code)
     72
     73        // gestion d'un encodage latin1
     74        if (SPIPDF_CHARSET=='ISO-8859-15' || SPIPDF_CHARSET=='iso-8859-15'){
     75                $trans['&#176;'] = '°';
     76                $trans["&#339;"] = 'oe';
     77                $trans["&#8211;"] = '-';
     78                $trans["&#8216;"] = '\'';
     79                $trans["&#8217;"] = '\'';
     80                $trans["&#8220;"] = '"';
     81                $trans["&#8221;"] = '"';
     82                $trans["&#8230;"] = '...';
     83                $trans["&#8364;"] = 'Euros';
     84                $trans["&ucirc;"] = "û";
     85                $trans['->'] = '-»';
     86                $trans['<-'] = '«-';
     87                $trans['&mdash;'] = '-';
     88                $trans['&deg;'] = '°';
     89                $trans['œ'] = 'oe';
     90                $trans['Œ'] = 'OE';
     91                $trans['…'] = '...';
     92                $trans['&euro;'] = 'Euros';
     93                $trans['€'] = 'Euros';
     94                $trans['&copy;'] = '©';
     95        }
     96        // pas d'insécable
     97        $trans['&nbsp;'] = ' ';
     98
     99        // certains titles font paniquer l'analyse
     100        // TODO : a peaufiner car ils sont necessaires pour les signets
     101        // <bookmark title="Compatibilité" level="0" ></bookmark>
     102        // http://wiki.spipu.net/doku.php?id=html2pdf:fr:v4:bookmark
     103        //$texte = preg_replace(',title=".*",msU', 'title=""', $texte);
     104
     105        $texte = strtr($texte, $trans);
     106        if (SPIPDF_CHARSET=='UTF-8'){
     107                $texte = charset2unicode($texte);
     108        } else {
     109                $texte = unicode2charset(charset2unicode($texte), SPIPDF_CHARSET); // Repasser tout dans le charset demandé
     110        }
     111
     112        // Décoder les codes HTML dans le charset final
     113        $texte = html_entity_decode($texte, ENT_NOQUOTES, SPIPDF_CHARSET);
     114
     115        return $texte;
     116}
     117
     118
     119function spipdf_nettoyer_html($html, $params_pdf = array()){
    120120
    121121        // supprimer les spans autour des images et récupérer le placement
    122122        $patterns_float = '/<span class=\'spip_document_.*spip_documents.*float:(.*);.*>(.*)<\/span>/iUms';
    123     if(!empty($params_pdf['float'])) {
    124             //function remplaceSpan($matches) { return str_replace('img', 'img style="padding:5px;" style="float:'.$matches[1].'"', $matches[2]); }
    125             function remplaceSpan($matches) { return str_replace('img', 'img style="padding:5px;" class="pdf_img_float_'.$matches[1].'"', $matches[2]); }
    126     } else {
    127             function remplaceSpan($matches) { return str_replace('img', 'img style="padding:5px;" align="'.$matches[1].'"', $matches[2]); }
    128     }
     123        if (!empty($params_pdf['float'])){
     124                //function remplaceSpan($matches) { return str_replace('img', 'img style="padding:5px;" style="float:'.$matches[1].'"', $matches[2]); }
     125                function remplaceSpan($matches){
     126                        return str_replace('img', 'img style="padding:5px;" class="pdf_img_float_' . $matches[1] . '"', $matches[2]);
     127                }
     128        } else {
     129                function remplaceSpan($matches){
     130                        return str_replace('img', 'img style="padding:5px;" align="' . $matches[1] . '"', $matches[2]);
     131                }
     132        }
    129133        $html = preg_replace_callback($patterns_float, 'remplaceSpan', $html);
    130134
    131135        // supprimer les spans autour des images
    132136        $patterns_float = '/<span class=\'spip_document_.*spip_documents.*>(.*)<\/span>/iUms';
    133         function remplaceSpanCenter($matches) { return $matches[1]; }
     137        function remplaceSpanCenter($matches){
     138                return $matches[1];
     139        }
     140
    134141        $html = preg_replace_callback($patterns_float, 'remplaceSpanCenter', $html);
    135142
    136143        // supprimer les dl autour des images et récupérer le placement
    137144        $patterns_float = '/<dl class=\'spip_document_.*spip_documents.*float:(.*);.*<dt>(.*)<\/dt>.*<\/dl>/iUms';
    138     if(!empty($params_pdf['float'])) {
    139             //function remplaceDt($matches) { return str_replace('img', 'img style="padding:5px;" style="float:'.$matches[1].'"', $matches[2]); }
    140             function remplaceDt($matches) { return str_replace('img', 'img style="padding:5px;" class="pdf_img_float_'.$matches[1].'"', $matches[2]); }
    141     } else {
    142             function remplaceDt($matches) { return str_replace('img', 'img style="padding:5px;" align="'.$matches[1].'"', $matches[2]); }
    143     }
     145        if (!empty($params_pdf['float'])){
     146                //function remplaceDt($matches) { return str_replace('img', 'img style="padding:5px;" style="float:'.$matches[1].'"', $matches[2]); }
     147                function remplaceDt($matches){
     148                        return str_replace('img', 'img style="padding:5px;" class="pdf_img_float_' . $matches[1] . '"', $matches[2]);
     149                }
     150        } else {
     151                function remplaceDt($matches){
     152                        return str_replace('img', 'img style="padding:5px;" align="' . $matches[1] . '"', $matches[2]);
     153                }
     154        }
    144155        $html = preg_replace_callback($patterns_float, 'remplaceDt', $html);
    145156
    146     // replacer id par name pour les notes
     157        // replacer id par name pour les notes
    147158        $patterns_note = '/<a.*href.*class=\'spip_note\'.*>/iUms';
    148     function remplaceIdParName($matches) { return str_replace('id=\'', 'name=\'', $matches[0]); }
     159        function remplaceIdParName($matches){
     160                return str_replace('id=\'', 'name=\'', $matches[0]);
     161        }
     162
    149163        $html = preg_replace_callback($patterns_note, 'remplaceIdParName', $html);
    150164
    151     // float sur les puces graphiques TODO
     165        // float sur les puces graphiques TODO
    152166        $patterns_puce = '/<a.*href.*class=\'puce\'.*>/iUms';
    153     function remplaceFloatPuce($matches) { return str_replace('style=\'', 'style=\'float:left;', $matches[0]); }
     167        function remplaceFloatPuce($matches){
     168                return str_replace('style=\'', 'style=\'float:left;', $matches[0]);
     169        }
     170
    154171        //$html = preg_replace_callback($patterns_puce, 'remplaceFloatPuce', $html);
    155     //img src="local/cache-vignettes/L8xH11/puce-32883.gif" class="puce" alt="-" style="height: 11px; width: 8px;" height="11" width="8">
     172        //img src="local/cache-vignettes/L8xH11/puce-32883.gif" class="puce" alt="-" style="height: 11px; width: 8px;" height="11" width="8">
    156173
    157174        // supprimer les dl autour des images centrer
    158175        $patterns_float = '/<dl class=\'spip_document_.*spip_documents.*<dt>(.*)<\/dt>.*<\/dl>/iUms';
    159         function remplaceDtCenter($matches) { return $matches[1]; }
     176        function remplaceDtCenter($matches){
     177                return $matches[1];
     178        }
     179
    160180        $html = preg_replace_callback($patterns_float, 'remplaceDtCenter', $html);
    161181
    162182        // remplacer les captions
    163     if(!empty($params_pdf['caption'])) {
    164         $patterns_caption = '/<table(.*)<caption>(.*)<\/caption>(.*)<\/table>/iUms';
    165         function remplaceCaption($matches) {
    166             $table  = '<table style="border:none;"'.$matches[1].'<tr><td style="text-align: center;border:none;">'.$matches[2].'</td></tr>';
    167             $table .= '<tr><td style="border:none;">';
    168             $table .= '<table'.$matches[1].$matches[3].'</table>';
    169             $table .= '</td></tr></table>';
    170             return $table;
    171         }
    172         $html = preg_replace_callback($patterns_caption, 'remplaceCaption', $html);
    173     }
     183        if (!empty($params_pdf['caption'])){
     184                $patterns_caption = '/<table(.*)<caption>(.*)<\/caption>(.*)<\/table>/iUms';
     185                function remplaceCaption($matches){
     186                        $table = '<table style="border:none;"' . $matches[1] . '<tr><td style="text-align: center;border:none;">' . $matches[2] . '</td></tr>';
     187                        $table .= '<tr><td style="border:none;">';
     188                        $table .= '<table' . $matches[1] . $matches[3] . '</table>';
     189                        $table .= '</td></tr></table>';
     190                        return $table;
     191                }
     192
     193                $html = preg_replace_callback($patterns_caption, 'remplaceCaption', $html);
     194        }
    174195
    175196        // tableaux centré
     
    178199        // gestion des caractères spéciaux et de charset
    179200        $html = spipdf_first_clean($html);
    180        
     201
    181202        return $html;
    182203
     
    184205
    185206// traiter la balise page
    186 function traite_balise_page($html) {
    187 
    188     // on teste la balise page
    189     if(preg_match('/<page(.*)>/iUms', $html, $matches)) {
    190         // on crée un tableau avec (beurk) Global pour accèder aux valeurs de pages
    191         if(!empty($matches[1])) {
    192             $balise_page = $matches[1];
    193             $pattern = '/(.*)="(.*)"/iUms';
    194             function getBalise($matches) {
    195                 $matches[2] = str_replace('mm', '', $matches[2]);
    196                 $GLOBALS['valeurs_page'][trim($matches[1])] = trim($matches[2]);
    197             }
    198             $balise_page = preg_replace_callback($pattern, 'getBalise', $balise_page);
    199 
    200             // supprimer <page> et </page>
    201             $html = preg_replace('/<\/?page(.*)>/iUms', '', $html);
    202 
    203             return $html;
    204         }
    205 
    206     } else {
    207         return $html;
    208     }
     207function traite_balise_page($html){
     208
     209        // on teste la balise page
     210        if (preg_match('/<page(.*)>/iUms', $html, $matches)){
     211                // on crée un tableau avec (beurk) Global pour accèder aux valeurs de pages
     212                if (!empty($matches[1])){
     213                        $balise_page = $matches[1];
     214                        $pattern = '/(.*)="(.*)"/iUms';
     215                        function getBalise($matches){
     216                                $matches[2] = str_replace('mm', '', $matches[2]);
     217                                $GLOBALS['valeurs_page'][trim($matches[1])] = trim($matches[2]);
     218                        }
     219
     220                        $balise_page = preg_replace_callback($pattern, 'getBalise', $balise_page);
     221
     222                        // supprimer <page> et </page>
     223                        $html = preg_replace('/<\/?page(.*)>/iUms', '', $html);
     224
     225                        return $html;
     226                }
     227
     228        } else {
     229                return $html;
     230        }
    209231
    210232}
    211233
    212234// supprimer le puces graphiques (d'après le plugin couteau suisse)
    213 function spipdf_pre_typo($texte) {
    214     return preg_replace('/^-\s*(?![-*#])/m', '-* ', $texte);
     235function spipdf_pre_typo($texte){
     236        return preg_replace('/^-\s*(?![-*#])/m', '-* ', $texte);
    215237}
    216238
    217239// traitement principal. avec ce pipeline, le PDF est mis en cache et recalculé "normalement"
    218 function spipdf_recuperer_fond($flux) {
     240function spipdf_recuperer_fond($flux){
    219241
    220242        // Le squelette est-il appelé par spipdf.html
    221         if ($flux['args']['contexte']['html2pdf'] == 'oui') {
    222        
    223         // récupérer le contenu et le nettoyer pour la génération
     243        if ($flux['args']['contexte']['html2pdf']=='oui'){
     244
     245                // récupérer le contenu et le nettoyer pour la génération
    224246                $html = $flux['data']['texte'];
    225247
    226         // les librairies possibles
    227         $possible_librairies = array(
    228             'mpdf' => array( // gére le float d'image mais pas les captions de tableau
    229                 'float' => true,
    230                 'caption' => true,
    231                 'traite_balise_page' => true
    232             ),
    233             'html2pdf' => array( // ne gére pas le float d'image et les captions
    234                 'float' => false,
    235                 'caption' => true
    236             ),
    237             'dompdf' => array( // domPDF beta 0.6 EXPERIMENTAL
    238                 'float' => false,
    239                 'caption' => true,
    240                 'traite_balise_page' => true
    241             ),
    242         );
    243 
    244         // choix de la classe de génération via la balise <page lib>
    245         if(preg_match('/\<page*.lib_pdf=["|\'](.*)["|\']/iUms', $html, $match_librairie)
    246             && !empty($match_librairie[1])
    247             && array_key_exists(strtolower($match_librairie[1]), $possible_librairies)) {
    248             $librairie_pdf = strtolower($match_librairie[1]);
    249         } else {
    250             $librairie_pdf = 'mpdf';
    251         }
    252 
    253         // tester si la librairie est dans /lib à la racine du spip ou dans le répertoire du plugin
    254         if(is_dir(_DIR_LIB.$librairie_pdf)) {
    255             $dir_librairie_pdf = _DIR_LIB.$librairie_pdf.'/';
    256         } elseif(is_dir(dirname(__FILE__).'/lib/'.$librairie_pdf)) {
    257             $dir_librairie_pdf = dirname(__FILE__).'/lib/'.$librairie_pdf.'/';
    258         } else {
    259             die('Impossible de trouver la librairie de génération de PDF '.$librairie_pdf.'. vérifiez que vous l\'avez bien téléchargée et installée dans /lib');
    260         }
    261 
    262         // nettoyer le HTML et gérer les placements d'image en fonction de la librairie utilisée
    263                 $html = spipdf_nettoyer_html($html,$possible_librairies[$librairie_pdf]);
    264 
    265         // Debug = voir le html sans génération de PDF
    266         if(isset($_GET['debug_spipdf'])) {
    267             echo $html;
    268             exit;
    269         }
    270 
    271         // du A4 par defaut
    272         $format_page = _SPIPDF_FORMAT;
    273        
    274         // traiter la balise page pour les librairies qui ne la comprennent pas
    275         if(!empty($possible_librairies[$librairie_pdf]['traite_balise_page'])) {
    276 
    277             $html = traite_balise_page($html);
    278 
    279             // dans balise_page, on ne récupère que quelques possibilité dont le format
    280             if(!empty($GLOBALS['valeurs_page'])) {
    281                                 if(!empty($GLOBALS['valeurs_page']['format']))
    282                     $format_page = $GLOBALS['valeurs_page']['format'];
    283                                 if(!empty($GLOBALS['valeurs_page']['backtop']))
     248                // les librairies possibles
     249                $possible_librairies = array(
     250                        'mpdf' => array( // gére le float d'image mais pas les captions de tableau
     251                                'float' => true,
     252                                'caption' => true,
     253                                'traite_balise_page' => true
     254                        ),
     255                        'html2pdf' => array( // ne gére pas le float d'image et les captions
     256                                'float' => false,
     257                                'caption' => true
     258                        ),
     259                        'dompdf' => array( // domPDF beta 0.6 EXPERIMENTAL
     260                                'float' => false,
     261                                'caption' => true,
     262                                'traite_balise_page' => true
     263                        ),
     264                );
     265
     266                // choix de la classe de génération via la balise <page lib>
     267                if (preg_match('/\<page*.lib_pdf=["|\'](.*)["|\']/iUms', $html, $match_librairie)
     268                        && !empty($match_librairie[1])
     269                        && array_key_exists(strtolower($match_librairie[1]), $possible_librairies)
     270                ){
     271                        $librairie_pdf = strtolower($match_librairie[1]);
     272                } else {
     273                        $librairie_pdf = 'mpdf';
     274                }
     275
     276                // tester si la librairie est dans /lib à la racine du spip ou dans le répertoire du plugin
     277                if (is_dir(_DIR_LIB . $librairie_pdf)){
     278                        $dir_librairie_pdf = _DIR_LIB . $librairie_pdf . '/';
     279                } elseif (is_dir(dirname(__FILE__) . '/lib/' . $librairie_pdf)) {
     280                        $dir_librairie_pdf = dirname(__FILE__) . '/lib/' . $librairie_pdf . '/';
     281                } else {
     282                        die('Impossible de trouver la librairie de génération de PDF ' . $librairie_pdf . '. vérifiez que vous l\'avez bien téléchargée et installée dans /lib');
     283                }
     284
     285                // nettoyer le HTML et gérer les placements d'image en fonction de la librairie utilisée
     286                $html = spipdf_nettoyer_html($html, $possible_librairies[$librairie_pdf]);
     287
     288                // Debug = voir le html sans génération de PDF
     289                if (isset($_GET['debug_spipdf'])){
     290                        echo $html;
     291                        exit;
     292                }
     293
     294                // du A4 par defaut
     295                $format_page = _SPIPDF_FORMAT;
     296
     297                // traiter la balise page pour les librairies qui ne la comprennent pas
     298                if (!empty($possible_librairies[$librairie_pdf]['traite_balise_page'])){
     299
     300                        $html = traite_balise_page($html);
     301
     302                        // dans balise_page, on ne récupère que quelques possibilité dont le format
     303                        if (!empty($GLOBALS['valeurs_page'])){
     304                                if (!empty($GLOBALS['valeurs_page']['format']))
     305                                        $format_page = $GLOBALS['valeurs_page']['format'];
     306                                if (!empty($GLOBALS['valeurs_page']['backtop']))
    284307                                        $backtop = $GLOBALS['valeurs_page']['backtop'];
    285308                                else
    286309                                        $backtop = _SPIPDF_MARGIN_TOP;
    287                                 if(!empty($GLOBALS['valeurs_page']['backbottom']))
     310                                if (!empty($GLOBALS['valeurs_page']['backbottom']))
    288311                                        $backbottom = $GLOBALS['valeurs_page']['backbottom'];
    289312                                else
    290313                                        $backbottom = _SPIPDF_MARGIN_BOTTOM;
    291                                 if(!empty($GLOBALS['valeurs_page']['backleft']))
     314                                if (!empty($GLOBALS['valeurs_page']['backleft']))
    292315                                        $backleft = $GLOBALS['valeurs_page']['backleft'];
    293316                                else
    294317                                        $backleft = _SPIPDF_MARGIN_LEFT;
    295                                 if(!empty($GLOBALS['valeurs_page']['backright']))
     318                                if (!empty($GLOBALS['valeurs_page']['backright']))
    296319                                        $backright = $GLOBALS['valeurs_page']['backright'];
    297320                                else
    298321                                        $backright = _SPIPDF_MARGIN_RIGHT;
    299                                 if(!empty($GLOBALS['valeurs_page']['margin_header']))
     322                                if (!empty($GLOBALS['valeurs_page']['margin_header']))
    300323                                        $margin_header = $GLOBALS['valeurs_page']['margin_header'];
    301324                                else
    302325                                        $margin_header = _SPIPDF_MARGIN_HEADER;
    303                                 if(!empty($GLOBALS['valeurs_page']['margin_footer']))
     326                                if (!empty($GLOBALS['valeurs_page']['margin_footer']))
    304327                                        $margin_footer = $GLOBALS['valeurs_page']['margin_footer'];
    305328                                else
    306329                                        $margin_footer = _SPIPDF_MARGIN_FOOTER;
    307             }
    308         }
    309 
    310         if($librairie_pdf=='mpdf') { // la librairie mPDF
    311 
    312             // si il y a des options dans la balise page
    313             // http://mpdf1.com/manual/index.php?tid=307
    314            
    315             // le chemin relatif vers mPDF
    316             define('_MPDF_PATH', $dir_librairie_pdf);
    317             include_once(_MPDF_PATH.'mpdf.php');
    318 
    319             // la classe mPDF
    320            $mpdf = new mPDF(SPIPDF_CHARSET, $format_page, 0, "", $backleft, $backright, $backtop, $backbottom, $margin_header, $margin_footer);
    321             $mpdf->WriteHTML($html);
    322 
    323             $flux['data']['texte'] = $mpdf->Output('', 'S');// envoyer le code binaire du PDF dans le flux
    324             $echap_special_pdf_chars = true;
    325            
    326         } elseif($librairie_pdf=='dompdf') { // la librairie dompdf beta 0.6 // EXPERIMENTAL
    327 
    328             // le chemin relatif vers mPDF
    329             require_once(_DIR_LIB.'dompdf/dompdf_config.inc.php');
    330 
    331             $dompdf = new DOMPDF();
    332             $dompdf->load_html($html,SPIPDF_CHARSET);
    333             $dompdf->set_paper($format_page);
    334             $dompdf->render();
    335 
    336             $flux['data']['texte'] = $dompdf->output();// envoyer le code binaire du PDF dans le flux
    337             $echap_special_pdf_chars = true;
    338            
    339         } else { // la librairie HTML2PDF par défaut
    340 
    341             // appel de la classe HTML2pdf
    342             require_once($dir_librairie_pdf.'html2pdf.class.php');
    343             try
    344             {
    345                 // les paramétres d'orientation et de format son écrasé par ceux défini dans la balise <page> du squelette
    346                 $html2pdf = new HTML2PDF('P',$format_page,$flux['args']['contexte']['lang'], SPIPDF_UNICODE, SPIPDF_CHARSET);
    347 
    348                 // mode debug de HTML2PDF
    349                 if(defined('SPIPDF_DEBUG_HTML2PDF')) {
    350                     $html2pdf->setModeDebug();
    351                 }
    352                 // police différente selon unicode ou latin
    353                 if(SPIPDF_UNICODE) {
    354                     $police_caractere = 'FreeSans';
    355                 } else {
    356                     $police_caractere = 'Arial';
    357                 }
    358                 $html2pdf->setDefaultFont($police_caractere);
    359                 $html2pdf->writeHTML($html);
    360                
    361                 $flux['data']['texte'] = $html2pdf->Output('', true);// envoyer le code binaire du PDF dans le flux
    362                 $echap_special_pdf_chars = true;
    363             }
    364             catch(HTML2PDF_exception $e) { echo $e; }
    365 
    366         }
    367 
    368         // On échappe les suites de caractères <? pour éviter des erreurs d'évaluation PHP (seront remis en place avec affichage_final)
    369         // l'erreur d'évaluation est liée à la directive short_open_tag=On dans la configuration de PHP
    370         if(!empty($echap_special_pdf_chars)) {
    371             $flux['data']['texte'] = preg_replace('/<\?/','<§§§§§>',$flux['data']['texte']);
    372         }
    373 
    374     }
     330                        }
     331                }
     332
     333                if ($librairie_pdf=='mpdf'){ // la librairie mPDF
     334
     335                        // si il y a des options dans la balise page
     336                        // http://mpdf1.com/manual/index.php?tid=307
     337
     338                        // le chemin relatif vers mPDF
     339                        define('_MPDF_PATH', $dir_librairie_pdf);
     340                        include_once(_MPDF_PATH . 'mpdf.php');
     341
     342                        // la classe mPDF
     343                        $mpdf = new mPDF(SPIPDF_CHARSET, $format_page, 0, "", $backleft, $backright, $backtop, $backbottom, $margin_header, $margin_footer);
     344                        $mpdf->WriteHTML($html);
     345
     346                        $flux['data']['texte'] = $mpdf->Output('', 'S'); // envoyer le code binaire du PDF dans le flux
     347                        $echap_special_pdf_chars = true;
     348
     349                } elseif ($librairie_pdf=='dompdf') { // la librairie dompdf beta 0.6 // EXPERIMENTAL
     350
     351                        // le chemin relatif vers mPDF
     352                        require_once(_DIR_LIB . 'dompdf/dompdf_config.inc.php');
     353
     354                        $dompdf = new DOMPDF();
     355                        $dompdf->load_html($html, SPIPDF_CHARSET);
     356                        $dompdf->set_paper($format_page);
     357                        $dompdf->render();
     358
     359                        $flux['data']['texte'] = $dompdf->output(); // envoyer le code binaire du PDF dans le flux
     360                        $echap_special_pdf_chars = true;
     361
     362                } else { // la librairie HTML2PDF par défaut
     363
     364                        // appel de la classe HTML2pdf
     365                        require_once($dir_librairie_pdf . 'html2pdf.class.php');
     366                        try {
     367                                // les paramétres d'orientation et de format son écrasé par ceux défini dans la balise <page> du squelette
     368                                $html2pdf = new HTML2PDF('P', $format_page, $flux['args']['contexte']['lang'], SPIPDF_UNICODE, SPIPDF_CHARSET);
     369
     370                                // mode debug de HTML2PDF
     371                                if (defined('SPIPDF_DEBUG_HTML2PDF')){
     372                                        $html2pdf->setModeDebug();
     373                                }
     374                                // police différente selon unicode ou latin
     375                                if (SPIPDF_UNICODE){
     376                                        $police_caractere = 'FreeSans';
     377                                } else {
     378                                        $police_caractere = 'Arial';
     379                                }
     380                                $html2pdf->setDefaultFont($police_caractere);
     381                                $html2pdf->writeHTML($html);
     382
     383                                $flux['data']['texte'] = $html2pdf->Output('', true); // envoyer le code binaire du PDF dans le flux
     384                                $echap_special_pdf_chars = true;
     385                        } catch (HTML2PDF_exception $e) {
     386                                echo $e;
     387                        }
     388
     389                }
     390
     391                // On échappe les suites de caractères <? pour éviter des erreurs d'évaluation PHP (seront remis en place avec affichage_final)
     392                // l'erreur d'évaluation est liée à la directive short_open_tag=On dans la configuration de PHP
     393                if (!empty($echap_special_pdf_chars)){
     394                        $flux['data']['texte'] = preg_replace('/<\?/', '<§§§§§>', $flux['data']['texte']);
     395                }
     396
     397        }
    375398
    376399        return $flux;
     
    379402
    380403// On rétablit les <? du code PDF
    381 function spipdf_affichage_final($texte) {
    382         return preg_replace('/<§§§§§>/','<?',$texte);
    383 }
     404function spipdf_affichage_final($texte){
     405        return preg_replace('/<§§§§§>/', '<?', $texte);
     406}
     407
    384408?>
Note: See TracChangeset for help on using the changeset viewer.