Changeset 65479 in spip-zone


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

Eviter une erreur fatale a la creation du PDF quand un article contient des modeles.
Cela dit cela reste non fonctionnel puisque le modele inclu génère un
%PDF-1.4 % 3 0 obj <> /Contents 4 0 R>> endobj 4 0 obj <> stream xS0R2353W(r Qp # endstream
endobj 1 0 obj <> endobj 2 0 obj <> >> endobj 5 0 obj <> endobj 6 0 obj <> endobj xref 0 7 0000000000
65535 f 0000000319 00000 n 0000000408 00000 n 0000000015 00000 n 0000000223 00000 n
0000000486 00000 n 0000000609 00000 n trailer <> startxref 718 %%EO
dans le PDF incluant.
Manifestement un problème de gestion des emboitement d'inclusion à règler.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spipdf/spipdf.php

    r65476 r65479  
    117117
    118118
     119//function spipdf_remplaceSpan($matches) { return str_replace('img', 'img style="padding:5px;" style="float:'.$matches[1].'"', $matches[2]); }
     120function spipdf_remplaceSpan_wfloat($matches){
     121        return str_replace('img', 'img style="padding:5px;" class="pdf_img_float_' . $matches[1] . '"', $matches[2]);
     122}
     123function spipdf_remplaceSpan($matches){
     124        return str_replace('img', 'img style="padding:5px;" align="' . $matches[1] . '"', $matches[2]);
     125}
     126function spipdf_remplaceSpanCenter($matches){
     127        return $matches[1];
     128}
     129//function spipdf_remplaceDt($matches) { return str_replace('img', 'img style="padding:5px;" style="float:'.$matches[1].'"', $matches[2]); }
     130function spipdf_remplaceDt_wfloat($matches){
     131        return str_replace('img', 'img style="padding:5px;" class="pdf_img_float_' . $matches[1] . '"', $matches[2]);
     132}
     133function spipdf_remplaceDt($matches){
     134        return str_replace('img', 'img style="padding:5px;" align="' . $matches[1] . '"', $matches[2]);
     135}
     136function spipdf_remplaceIdParName($matches){
     137        return str_replace('id=\'', 'name=\'', $matches[0]);
     138}
     139function spipdf_remplaceFloatPuce($matches){
     140        return str_replace('style=\'', 'style=\'float:left;', $matches[0]);
     141}
     142function spipdf_remplaceDtCenter($matches){
     143        return $matches[1];
     144}
     145function spipdf_remplaceCaption($matches){
     146        $table = '<table style="border:none;"' . $matches[1] . '<tr><td style="text-align: center;border:none;">' . $matches[2] . '</td></tr>';
     147        $table .= '<tr><td style="border:none;">';
     148        $table .= '<table' . $matches[1] . $matches[3] . '</table>';
     149        $table .= '</td></tr></table>';
     150        return $table;
     151}
     152
    119153function spipdf_nettoyer_html($html, $params_pdf = array()){
    120 
    121154        // supprimer les spans autour des images et récupérer le placement
    122155        $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){
    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         }
    133         $html = preg_replace_callback($patterns_float, 'remplaceSpan', $html);
     156        $html = preg_replace_callback($patterns_float, !empty($params_pdf['float'])?'spipdf_remplaceSpan':'spipdf_remplaceSpan_wfloat', $html);
    134157
    135158        // supprimer les spans autour des images
    136159        $patterns_float = '/<span class=\'spip_document_.*spip_documents.*>(.*)<\/span>/iUms';
    137         function remplaceSpanCenter($matches){
    138                 return $matches[1];
    139         }
    140 
    141         $html = preg_replace_callback($patterns_float, 'remplaceSpanCenter', $html);
     160        $html = preg_replace_callback($patterns_float, 'spipdf_remplaceSpanCenter', $html);
    142161
    143162        // supprimer les dl autour des images et récupérer le placement
    144163        $patterns_float = '/<dl class=\'spip_document_.*spip_documents.*float:(.*);.*<dt>(.*)<\/dt>.*<\/dl>/iUms';
    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         }
    155         $html = preg_replace_callback($patterns_float, 'remplaceDt', $html);
     164        $html = preg_replace_callback($patterns_float, !empty($params_pdf['float'])?'spipdf_remplaceDt':'spipdf_remplaceDt_wfloat', $html);
    156165
    157166        // replacer id par name pour les notes
    158167        $patterns_note = '/<a.*href.*class=\'spip_note\'.*>/iUms';
    159         function remplaceIdParName($matches){
    160                 return str_replace('id=\'', 'name=\'', $matches[0]);
    161         }
    162 
    163         $html = preg_replace_callback($patterns_note, 'remplaceIdParName', $html);
     168        $html = preg_replace_callback($patterns_note, 'spipdf_remplaceIdParName', $html);
    164169
    165170        // float sur les puces graphiques TODO
    166171        $patterns_puce = '/<a.*href.*class=\'puce\'.*>/iUms';
    167         function remplaceFloatPuce($matches){
    168                 return str_replace('style=\'', 'style=\'float:left;', $matches[0]);
    169         }
    170 
    171         //$html = preg_replace_callback($patterns_puce, 'remplaceFloatPuce', $html);
     172        //$html = preg_replace_callback($patterns_puce, 'spipdf_remplaceFloatPuce', $html);
    172173        //img src="local/cache-vignettes/L8xH11/puce-32883.gif" class="puce" alt="-" style="height: 11px; width: 8px;" height="11" width="8">
    173174
    174175        // supprimer les dl autour des images centrer
    175176        $patterns_float = '/<dl class=\'spip_document_.*spip_documents.*<dt>(.*)<\/dt>.*<\/dl>/iUms';
    176         function remplaceDtCenter($matches){
    177                 return $matches[1];
    178         }
    179 
    180         $html = preg_replace_callback($patterns_float, 'remplaceDtCenter', $html);
     177        $html = preg_replace_callback($patterns_float, 'spipdf_remplaceDtCenter', $html);
    181178
    182179        // remplacer les captions
    183180        if (!empty($params_pdf['caption'])){
    184181                $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);
     182                $html = preg_replace_callback($patterns_caption, 'spipdf_remplaceCaption', $html);
    194183        }
    195184
Note: See TracChangeset for help on using the changeset viewer.