source: spip-zone/_plugins_/article_pdf/article_pdf.html @ 108965

Last change on this file since 108965 was 108965, checked in by maieul@…, 22 months ago

encodage

File size: 6.0 KB
Line 
1#CACHE{0}
2<?php
3
4        //au choix, selon le cas (voir les avantages et les inconvéniants de chaque selon le site):
5    $path_pdf = sous_repertoire(_DIR_CACHE, "article_PDF"); // stockage dans le cache SPIP
6        $path_pdf = sous_repertoire(_DIR_IMG, "article_PDF"); //stockage sous le dossier IMG
7
8        // Mode release => $debug=0
9        // Mode debug => $debug=1 (ne fonctionne pas sous Internet Explorer)=> ??? si, ça fonctionne !
10        $debug=1;
11
12        <BOUCLE_principale(RUBRIQUES){id_rubrique}>
13
14        $conf_url_site = '[(#URL_RUBRIQUE|url_absolue|texte_script)]' ;
15        $conf_nom_site = '[(#NOM_SITE_SPIP|pdf_first_clean|supprimer_tags|texte_script)]' ;
16
17        // Recuperation et definition des differents elements
18
19        $site='[(#NOM_SITE_SPIP|pdf_first_clean|supprimer_tags|texte_script)]';
20        $rubrique='<BOUCLE_rubrique_mere(RUBRIQUES){id_enfant}>[(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)]</BOUCLE_rubrique_mere>[(#NOM_SITE_SPIP|pdf_first_clean|supprimer_tags|texte_script)]<//B_rubrique_mere>';
21        $DateParution='[(#DATE_REDAC|affdate|pdf_first_clean|texte_script)]';
22        $DateMiseEnLigne='[(#DATE|nom_jour|texte_script)] [(#DATE|affdate|pdf_first_clean|texte_script)]';
23
24        /*$auteur='<BOUCLE_auteurs(AUTEURS){id_rubrique}{", "}>[(#NOM|pdf_first_clean|texte_script)]</BOUCLE_auteurs>';*/
25        $motsclef=/*'<BOUCLE_keywords(MOTS){id_rubrique}{", "}>[(#TITRE|pdf_first_clean|supprimer_tags|texte_script)]</BOUCLE_keywords>'*/'';
26        $yahoo='-<BOUCLE_yahoo(HIERARCHIE){id_rubrique}> [(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)] - </BOUCLE_yahoo>';
27
28        $logo_site='[(#LOGO_SITE_SPIP|extraire_attribut{src}|texte_script)]';
29        // attention à l'ordre des filtres SPIP
30        [$logo_fichier='(#LOGO_RUBRIQUE|extraire_attribut{src}|texte_script|supprimer_param_logo)';]
31
32//  [$logo_lien="(#URL_ARTICLE)";]
33
34        [$surtitre='(#SURTITRE|pdf_first_clean|supprimer_tags|texte_script)';]
35        [$titre='(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)';]
36        [$soustitre='(#SOUSTITRE|pdf_first_clean|supprimer_tags|texte_script)';]
37        [$chapo='(#CHAPO|pdf_first_clean|texte_script)';]
38        [$descriptif='(#DESCRIPTIF|pdf_first_clean|texte_script)';]
39        [$texte= '(#TEXTE|pdf_first_clean|texte_script)';]
40        [$ps='(#PS|pdf_first_clean|texte_script)';]
41        [$notes='(#NOTES|pdf_first_clean|texte_script)';]
42
43        $copyright = '[(#VAL{articlepdf:copyright}|_T|pdf_first_clean|texte_script)][(#NOM_SITE_SPIP|pdf_first_clean|supprimer_tags|texte_script)][(#VAL{articlepdf:tous_droits_reserves}|_T|pdf_first_clean|texte_script)]';
44
45        $id_rubrique = "#ID_RUBRIQUE";
46
47        $titre_rubrique = translitteration(corriger_caracteres('[(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)]'));
48        // Reprise du code de urls/propres.php (pourquoi c'est pas une fonction de l'API de SPIP ?)
49
50        // on va convertir tous les caracteres de ponctuation et espaces
51        // a l'exception de l'underscore (_), car on veut le conserver dans l'url
52        $titre_rubrique = str_replace('_', chr(7), $titre_rubrique);
53        $titre_rubrique = @preg_replace(',[[:punct:][:space:]]+,u', ' ', $titre_rubrique);
54        $titre_rubrique = str_replace(chr(7), '_', $titre_rubrique);
55
56        // S'il reste trop de caracteres non latins, les gerer comme wikipedia
57        // avec rawurlencode :
58        if (preg_match_all(",[^a-zA-Z0-9 _]+,", $titre_rubrique, $r, PREG_SET_ORDER)) {
59                foreach ($r as $regs) {
60                        $titre_rubrique = substr_replace($titre_rubrique, rawurlencode($regs[0]),
61                                strpos($titre_rubrique, $regs[0]), strlen($regs[0]));
62                }
63        }
64
65        // S'il reste trop peu, on retombe sur rubrique12
66        if (strlen($titre_rubrique) == 0 ) {
67                $titre_rubrique = "rubrique";
68        }
69
70        // Sinon couper les mots et les relier par des tirets
71        else {
72                $mots = preg_split(",[^a-zA-Z0-9_%]+,", $titre_rubrique);
73                $titre_rubrique = '';
74                foreach ($mots as $mot) {
75                        if (!strlen($mot)) continue;
76                        $titre_rubrique2 = $titre_rubrique.'-'.$mot;
77
78                        // Si on depasse _URLS_PROPRES_MAX caracteres, s'arreter
79                        // ne pas compter 3 caracteres pour %E9 mais un seul
80                        $long = preg_replace(',%.,', '', $titre_rubrique2);
81                        if (strlen($long) > _URLS_PROPRES_MAX) {
82                                break;
83                        }
84
85                        $titre_rubrique = $titre_rubrique2;
86                }
87                $titre_rubrique = substr($titre_rubrique, 1);
88
89                // On enregistre en utf-8 dans la base
90                $titre_rubrique = rawurldecode($titre_rubrique);
91
92                if (strlen($titre_rubrique) == 0)
93                        $titre_rubrique = "rubrique";
94        }
95
96        $files_pdf = $titre_rubrique."_".$id_rubrique.".pdf";
97        $file_out = $path_pdf . $files_pdf ;
98
99        if (file_exists($file_out))
100        {
101                clearstatcache;
102                $damo = date(YmdHi , strtotime("#DATE_MODIF")) ;
103                $dage = date(YmdHi , filemtime($file_out)) ;
104                if ($damo > $dage)
105                {
106                        unlink($file_out);
107                }
108        }
109
110        </BOUCLE_principale>
111        header("Location: index.php");
112        exit;
113        <//B_principale>
114
115        if ($debug == 1 && file_exists($file_out))
116        {
117                unlink($file_out);
118        }
119
120        if (!file_exists($file_out))
121        {
122
123       
124               
125                define('FPDF_FONTPATH',_DIR_FPDF_LIB.'font');
126                include_spip(_DIR_FPDF_LIB.'fpdf');
127                include_spip('pdf/lib_pdf_global');
128                include_spip('pdf/lib_pdf_spip');
129               
130                //--------------------------------
131                // Debut génération du PDF
132                //--------------------------------
133                $pdf->debug=$debug;
134                $pdf=new PDF_SPIP();
135
136                $pdf->SetCompression(false);
137                $pdf->SetDisplayMode(fullpage, single );
138
139                // haut, gauche,  bas, droite
140                $pdf->SetAllMargins(12,15,12,10);
141
142                $pdf->SetTitle($titre);
143                $pdf->SetCreator($site);
144                $pdf->SetCopyright($copyright);
145                $pdf->SetSubject($rubrique);
146                $pdf->SetKeywords($motsclef);
147
148                $pdf->Build($file_out);
149
150        }
151
152                // Vous voulez afficher un pdf
153                header("Content-type: application/pdf");
154        if ($debug==1)
155        {
156                // Affiche le PDF directement dans l'onglet de Firefox
157                // Ne fonctionne pas sous IE 6 SP2 : le pdf n'est pas reconnu (pris pour un fichier texte)
158                header("location: ". url_de_base() . $file_out);
159        }
160        else
161        {
162                // Il sera nommé $files_pdf
163                // ATTENTION : pour "filename", mettre un nom de fichier court (<nom>.<extension>)
164                // sinon IE 6 SP2 ne reconnaîtra pas le type de fichier
165                // Semble poser problème sous IE6 SP1
166                // Ah,  Microsoft, je vous jure !
167                header('Content-Disposition: attachment; filename=' . $files_pdf);
168
169                // Le source du PDF original.pdf
170                readfile($file_out);
171        }
172
173        exit;
174?>
Note: See TracBrowser for help on using the repository browser.