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

Last change on this file since 79865 was 79865, checked in by severo@…, 6 years ago

On remplace les chaines de langue en dur par des traductions.

En faisant attention de bien les faire passer dans les fonctions
dédiées pour bien gérer l'encodage.

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