[spip-dev] Sortie de FPDF 1.4

Salut,

Des news de la classe FPDF qui permet de générer des fichier PDF en
PHP. Aujourd'hui la classe a atteint un niveau acceptable en qualité
des fichiers générés. Sur ce deux questions.

(1) INTEGRATION à SPIP
On pourrait l'intégrer à Spip?
D'un côté ça serait super et d'un autre certains utilisateurs n'ont
rien à foutre de pouvoir générer des fichiers PDF de leurs articles.

(2) CREATION DE PDF
Comment intégrer cette classe à Spip?
Dans un squelette sûrement. Donc dans mon squelette je met des trucs
comme ceci: <? FPDF("[(#TEXTE|addslashes)]"); ?>
Dans la logique ça marche mais est-ce que quelqu'un voit ici un
problème de logique???

Merci d'avance.

Plus d'infos: http://www.fpdf.org/

PS: Ci-dessous le mail du créateur de la classe.

à++

-- BohwaZ

@ Dioxyde.org <dioxyde@free.fr> :

Des news de la classe FPDF qui permet de générer des fichier PDF en
PHP. Aujourd'hui la classe a atteint un niveau acceptable en qualité
des fichiers générés. Sur ce deux questions.

Les démos ont l'air pas mal !

(1) INTEGRATION à SPIP
On pourrait l'intégrer à Spip?
D'un côté ça serait super et d'un autre certains utilisateurs n'ont
rien à foutre de pouvoir générer des fichiers PDF de leurs articles.

Non, c'est inutile. En revanche le point ci-dessous est intéressant :

(2) CREATION DE PDF
Comment intégrer cette classe à Spip?
Dans un squelette sûrement. Donc dans mon squelette je met des trucs
comme ceci: <? FPDF("[(#TEXTE|addslashes)]"); ?>
Dans la logique ça marche mais est-ce que quelqu'un voit ici un
problème de logique???

Oui, il y a un problème : ton appel à FPDF sera reproduit à chaque
consultation du fichier PDF ; on perd tout le bénéfice d'un cache, et on
risque des problèmes de performances sur des articles de plusieurs pages.

Il y a ici une piste pour créer un cache de fichier "produit", que j'ai fait
fonctionner avec une image - il suffit d'adapter aux appels à la classe
fpdf.

<http://listes.rezo.net/archives/spip-dev/2001-11/msg00075.html>

-- Fil

Merci pour la réponnse.

Fabrice

Une piste : créer différentes fonctions dans le fichier mes_fonctions.php3
comme suit :

<?php

require('fpdf.php');

function pdf_ouvrir_article($id_article) {
     global $pdf = new FPDF (paramètres au choix...);
     $pdf->Open();
     // etc : creation de page ? je ne connais pas le fonctionnement exact

     return "";
}

function pdf_ajouter_texte($texte) {
     global $pdf;
     //Times 12
     $pdf->SetFont('Times','',12);
     //Sortie du texte justifié
     $pdf->MultiCell(0,5,$texte);
     //Saut de ligne
     $this->Ln();

     return "";
}

function pdf_envoyer_article($id_article) {
     global $pdf;
     $fichier = "CACHE/pdf_article$id_article.pdf";
     $pdf->Output($fichier);

     return "<? header("mime-type du pdf (à compléter)"); readfile('$fichier'); ?>";
}

?>

Maintenant le squelette :

<?php // sert a eviter l'envoi de lignes blanches avant/apres le binaire PDF

$GLOBALS['flag_preserver'] = 1; // ne pas afficher les boutons d'admin

<BOUCLE_Article(id_article)>

[(#ID_ARTICLE|pdf_ouvrir)]
[(#TITRE|pdf_texte)]
[(#TEXTE|pdf_texte)]
[(#ID_ARTICLE|pdf_envoyer)]

?></BOUCLE_article>

?>

<h4>Pas d'article à cette adresse. </h4>

<//B_article>

Non testé, et le code FPDF est repompé directement du tutorial sur le site
Web. En pratique il faudrait faire une fonction différente par style :

pdf_afficher_titre()
pdf_afficher_texte()
pdf_afficher_auteurs()

etc.

a+

Antoine.

Bon j'ai installé FPDF chez moi et fait quelques tests.
Tout d'abord voici une combinaison mes_fonctions/squelette
qui marche plus ou moins.

Ensuite :
- Il faut désactiver le flux compressé dans ecrire/inc_version
pour que le navigateur s'y retrouve
- Explorer me sort une erreur bizarre ("Explorer n'arrive pas
à ouvrir le site Web") après m'avoir demandé si je préférais
ouvrir ou télécharger le fichier. Mozilla affiche le PDF en
plug-in sans problème. Je ne sais pas d'où ça peut venir.

Il y a aussi le traitement des raccourcis SPIP à implémenter....

Exemple :
http://rezo.net/~antoine/spip/article_pdf.php3?id_article=986

mes_fonctions.php3 (889 Bytes)

article_pdf.html (514 Bytes)

J'ai écrit :

- Il faut désactiver le flux compressé dans ecrire/inc_version
pour que le navigateur s'y retrouve
- Explorer me sort une erreur bizarre ("Explorer n'arrive pas
à ouvrir le site Web") après m'avoir demandé si je préférais
ouvrir ou télécharger le fichier. Mozilla affiche le PDF en
plug-in sans problème. Je ne sais pas d'où ça peut venir.

Suis-je bête, il y a une solution beaucoup plus simple et
compatible à tous les coups, c'est de simplement rediriger
le brouteur vers le fichier PDF généré. Ca évite les problèmes
mentionnés ci-dessus, et facilite l'utilisation d'outils
de téléchargement (type Getright).

Voici le mes_fonctions.php3 correspondant. Je vais manger.

mes_fonctions.php3 (661 Bytes)

Salut,

Je viens d'essayer la SPIP-v1-4a9.
Quand j'essaye d'afficher un article existant avec images, j'ai "Pas de
previsualisation" a la place des images dans l'espace public.
Je n'ai pas de problemes sur la 1.4a5.
Dans l'espace prive, j'arrive pas a uploader des images ou des doc (Warning
MySQL) mais c'est peut-etre a cause de mon hebergeur ovh.net qui a
,temporairement, desactive l'upload PHP.

A+

Raphael