Changeset 117543 in spip-zone


Ignore:
Timestamp:
Aug 12, 2019, 1:58:12 PM (16 months ago)
Author:
tofulm
Message:

On ajoute une compatibilite avec la lib mpdf >= v7
On utilise composer pour charger la lib, d'ou la presence maintenant du
dossier vendor.
pour rester compatible avec la lib mpdf < v7, on change la valeur de
l'attribut en mpdf8

Location:
_plugins_/spipdf/branches/mpdf
Files:
709 added
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • _plugins_/spipdf/branches/mpdf/spipdf_fonctions.php

    r111477 r117543  
    160160
    161161function spipdf_nettoyer_html($html, $params_pdf = array()){
    162        
     162
    163163        // supprimer les spans autour des images
    164164        $patterns_float = '/<span class=\'spip_document_[0-9]+ spip_documents.*>(.*)<\/span>/iUms';
     
    236236/**
    237237 * traitement principal. avec ce pipeline, le PDF est mis en cache et recalculé "normalement"
    238  * 
    239  * 
    240  * @param string $html 
     238 *
     239 *
     240 * @param string $html
    241241 *   Le contenu HTML à transformer en PDF
    242242 * @param string/bool $file
     
    250250        $possible_librairies = array(
    251251                'mpdf' => array( // gére le float d'image mais pas les captions de tableau
     252                        'float' => true,
     253                        'caption' => true,
     254                        'traite_balise_page' => true,
     255                ),
     256                'mpdf8' => array( // mpdf v8 ou plus charger via autoloader
    252257                        'float' => true,
    253258                        'caption' => true,
     
    275280        }
    276281
    277         // tester si la librairie dans un sous-dossier de lib/ à la racine du spip ou dans le dossier squelettes/ ou dans un plugin
    278         $dir_librairie_pdf = find_in_path("lib/$librairie_pdf/");
    279         if (!$dir_librairie_pdf){
    280                 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/ ou squelettes/lib/');
     282        if ($librairie_pdf !== 'mpdf8') {
     283                // tester si la librairie dans un sous-dossier de lib/ à la racine du spip ou dans le dossier squelettes/ ou dans un plugin
     284                $dir_librairie_pdf = find_in_path("lib/$librairie_pdf/");
     285                if (!$dir_librairie_pdf){
     286                        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/ ou squelettes/lib/');
     287                }
    281288        }
    282289
    283290        // nettoyer le HTML et gérer les placements d'image en fonction de la librairie utilisée
    284         $html = spipdf_nettoyer_html($html, $possible_librairies[$librairie_pdf]);
     291        //$html = spipdf_nettoyer_html($html, $possible_librairies[$librairie_pdf]);
    285292
    286293        // Debug = voir le html sans génération de PDF
     
    351358                        define('_MPDF_TTFONTDATAPATH', sous_repertoire(_DIR_CACHE, 'ttfontdata'));
    352359                }
    353                
     360
    354361                include_once _MPDF_PATH . 'mpdf.php';
    355362
     
    358365                $mpdf->WriteHTML($html);
    359366                /**
    360                  * Si un nom de fichier est fourni, on enregistre le fichier,
     367                 * Si un nom de fichier est fourni, on enregistre le fichier,
     368                 * sinon envoyer le code binaire du PDF dans le flux
     369                 */
     370                $html = $mpdf->Output($file, $file ? 'F' : 'S');
     371                $echap_special_pdf_chars = true;
     372        } elseif ($librairie_pdf=='mpdf8'){
     373                // lib mpdf 8 charger via autoloader
     374                // https://mpdf.github.io/installation-setup/installation-v7-x.html
     375
     376                // les fichiers tmp dans le tmp/ de spip
     377                if (!defined('_MPDF_TEMP_PATH')) {
     378                        define("_MPDF_TEMP_PATH", sous_repertoire(_DIR_TMP, 'mpdf'));
     379                }
     380
     381                include_once _DIR_PLUGIN_SPIPDF.'vendor/autoload.php';
     382
     383                $options = array(
     384                        'tempDir'    => _MPDF_TEMP_PATH,
     385                        'charset_in' => SPIPDF_CHARSET,
     386                        'format'     => $format_page,
     387                        //'mode' => '1',
     388                );
     389
     390                $mpdf = new \Mpdf\Mpdf($options);
     391                $mpdf->WriteHTML($html);
     392
     393                /**
     394                 * Si un nom de fichier est fourni, on enregistre le fichier,
    361395                 * sinon envoyer le code binaire du PDF dans le flux
    362396                 */
     
    373407                $dompdf->render();
    374408                $html = $dompdf->output();
    375                
     409
    376410                if ($file) {
    377411                        include_spip('inc/flock');
Note: See TracChangeset for help on using the changeset viewer.