Ce tout petit plugin a été créé pour permettre une utilisation de la bibliothèque (library) FPDF par tout autre plugin. En effet, plusieurs plugins, dont Associaspip et AMAP, utilisent déjà cette librairie. Or si deux plugins intègrent séparément le zip, elle serait présente deux fois, peut-être en des versions différentes et incompatibles ; tandis que là on a une seule installation et une mise à jour commune pour tous les plugins utilisant FPDF.
La bibliothèque objet FPDF permet de fabriquer des PDF sur mesure, contrairement aux autres plugins qui ne génèrent que le PDF d’un objet éditorial (l’article) dans un formatage prédéfini. Cette bibliothèque de méthodes s’adresse aux développeurs de plugins : elle permet d’utiliser toutes les tables et filtres de SPIP mais ne fournit pas les pages PHP qu’il faut écrire soit-même !
Contrairement à PDFlib et ClibPDF, qui sont gratuits pour un usage non-commercial, FPDF est vraiment un logiciel libre d’où son choix préférentiel
La version 0.0.3 inclut aussi la libraire complémentaire FPDI permettant l’éditer, de fusionner des pdfs existants. Par exemple, on peut ainsi créer des pdfs personnalisés en partant d’un pdf patron.
Voir Réaliser un PDF personnalisé avec FPDF
Installation
De préférence, utiliser la fonction d’installation automatique des
plugins (pour SPIP 2 & 3).
Pour les versions 1.9 de SPIP, télécharger le zip, dézippez-le, puis suivez la procédure normale d’installation.
Utilisation
- Déclaration dans le plugin
Pour utiliser cette bibliothèque dans vos plugins, il faut le déclarer dans votre plugin.xml :
<necessite id="fpdf" version="[1.0.0;]" />
ou
<utilise id="fpdf" version="[1.0.0;]" />
Utilisation dans les fichiers : niveau 1
Pour charger la librairie, dans vos plugins, utliser le code :
define('FPDF_FONTPATH','font/');
include_spip('fpdf');
// include_spip('fpdi'); // pour charger FPDI
À partir de là, vous pouvez utiliser les méthodes de FPDF conjointement à l’API de SPIP.
Pour instancier un objet à tout moment :
$mon_pdf = new FPDF();
// ....
Utilisation dans les fichiers : niveau 2
Vous pouvez étendre la classe FPDP
par une classe PDF
et y redéfinir certaines méthodes, par exemple dans pdf/extends.php à la racine du plugin.
Ensuite il faudra appeler cette classe via
include_spip('pdf/extends');
.
Pour instancier un objet avec la classe étendue :
$mon_pdf = new PDF();
Discussions par date d’activité
7 discussions
Bonjour les écureuils. C’est une bonne idée que de mutualiser cette librairie par l’usage de ce plugin de développement.
Mais, le plugin a une librairie très ancienne. La nouvelle (pas si nouvelle, 2015 je crois) apporte quelques nouvelles options. Notamment il devient inutile de préciser le chemin des fontes s’il est bien dans le repertoire de la librairie (define(’FPDF_FONTPATH’,’font/’) ; est inutile).
J’ai mis à jour pour moi-même le plugin mais comment vérifier que les plugins qui utiliseront le plugin fpdf ont une librairie à jour ? En effet, on ne peut pas se baser sur la version du plugin fpdf pour connaitre la version de la librairie...
Des suggestions ?
Bonjour,
Une version de FPDF est sorti à noël mais j’ai pas encore regarder pour mettre à jour en effet.
Tu as la version ici https://zone.spip.org/trac/spip-zone/browser/spip-zone/_plugins_/fpdf/trunk/fpdf.php qui est utilisé.
Répondre à ce message
svp j’ai un problème mon fpdf génère la 1er page mais les autres nn :p
Bonjour,
Que tester vous exactement ?
Répondre à ce message
Vraiment pratique ce plugin je débute sur SPIP après des années sous WP, c’est le genre de plugin qui m’invite a continuer a explorer ce CMS
;-) Et ne pas hésiter à faire remonter tout souci d’utilisation ou suggestion d’amélioration.
Répondre à ce message
Vous pourriez tout de même mettre en place un espace de test comme le http://demo.spip.net/spip.php ce qui permettrait au débutant comme nous de se faire tout de même une idée.
Merci et bon courage
Bonjour Mélinda.
C’est un plugin pour développeur : une brique pour permettre à d’autres plugins de générer facilement des PDFs. Par conséquent, il ne s’adresse pas vraiment aux débutants d’une part, et il ne peut pas avoir de page de démo tout seul d’autre part (en fait il faudra des démos pour les plugins qui l’utilisent)
Merci et bon week-end.
Répondre à ce message
Enfin, ça fait longtemps que je cherche à faire cela. Merci pour les conseils. Spip n’est pas évident mais on peut faire pas mal de chose avec !
Bonjour
Si tu as dev un site avec, je suis preneur de suggestions
Répondre à ce message
Bravo ! Je viens de commencer à travailler dessus c’est très utile ! Merci.
Hésite pas si tu as des questions. une fois ton plugins sur zone, dis nous le quel, qu’on regarde un peu ton utilisation.
Et aussi si tu as quelque remarque permettant d’améliorer cette page de prise en main (documentation serait un bien grand mot comparé au manuel et aux exemples sur le site du projet) ;)
En fait je ne l’utilise (encore) pas dans le cadre d’un plugin. J’avais simplement besoin de pouvoir créer un pdf très personnalisé dont le contenu provient de plusieurs tables spip. J’avais testé les autres plugins mais cela ne convenait pas à mes besoins.
Pour améliorer la page de prise en main je propose de mettre des bouts de codes des fichiers tutoriaux, notamment ceux où l’on voit du spipcode. Cela fera peut-être moins peur aux néophytes en php !
J’ai eu des problèmes d’affichage des caractères spéciaux. Après plusieurs tentatives j’ai trouvé comment les afficher correctement (notamment les apostrophes française arrondies qui m’ont donné du fil à retordre)
Voici le code de la fonction WriteHTM où j’ai ajouté deux traitements au début :
Cela fonctionne encore faut-il que la fonction iconv soit disponible...
Ah bien, je vais essayer de le faire sur le plugins Amap
Tu pourrais me dire sur quel fichier tu as fait cela ?
Bonjour Thomas.
Je pense qu’il s’agit d’une nouvelle discussion (et donc qu’il fallait faire un nouveau message plutôt que de répondre à un autre, pour qu’on puisse facilement suivre)
D’après ses logs, FPDF a des problème d’encodage qui ont été corrigés et il supporte l’UTF8... Mais (car il reste un « mais ») les polices livrées par défaut ne sont pas Unicode... :-S
Pour en revenir à votre solution, c’est quelque chose à faire systématiquement en PHP : il faut utiliser html_entity_decode pour transformer le texte balisé en HTML (avec les entités numériques ou nommées) en texte brute (tel qu’on mettrait directement dans le « bloc notes » et donc avoir des caractères accentués et non les entités).
Pour translittérer les caractères Unicode avant de les afficher avec FPDF il faut utiliser
utf8_decode
: qui n’a pas besoin de la présence de iconv ni ne nécessite de faire des remplacements de sous-chaineEn fait
utf8_decode
fonctionne aussi avec les entités XML des chaines de langue comme on peut le voir das exec/pdf_activites et exec/pdf_fiscal de AssociaspipMerci Gilcot. En fait, avec utf8_decode, il reste le problème des apostrophes françaises arrondies qui sont remplacées par un point d’interrogation. Il semble que uf8_decode() ne les gèrent pas.
Ah, ok.
C’est vrai que
iconv
peut donner un meilleur résultat, sous réserve qu’il soit disponible sur la machine où le script tourne.Ceci dit, ces problèmes sont dus au fait que les polices libres fournies par défaut ne sont pas Unicode d’une part et encodé en cp1252 par défaut... Vos projets peuvent fournir leur police et les charger avec la méthode
AddFont
http://fpdf.org/en/tutorial/tuto7.htm http://fpdf.org/en/doc/addfont.htmC’est le prix de la simplicité de la classe FPDF http://stackoverflow.com/questions/6334134/fpdf-utf-8-encoding-how-to
Répondre à ce message
FPDF ne devrait pas se trouver dans le dossier « lib » à la racine du site, comme les autres librairies externe ?
Bonjour
Non car une partie des fichiers est du php que SPIP dois pouvoir lire je sais pas si en pib/ ça fonctionnerais.
Pourquoi n’y a-t-il pas de démonstration (ou site demo) du résultat obtenu avec ce plugin ? Sur tous les plugins de Spip-Contribs, ça fonctionne comme ça...
Merci par avance.
Ça permettrait de faire un comparatif avec ce Spipdf (URL : http://plugins.spip.net/spipdf.html)...
en fait, c’est un plugin pour dev de plugin, et non pas un plugin « clef en main ». Dans ce genre de cas l’administrateur de contrib peut admettre de laisser un article moins didactique, car on suppose que la personne qui va lire est capable de comprendre comment faire.
En gros, ce n’est pas un article pour « spipeur débutant ». C’est un plugin qui sert pour les dev de plugin.
Et puis spipdf est bridé pour les article hors nous avons monter un plugins qui permets de monter un pdf depuis n’importe qu’elle table et le contenu que tu souhaites, faut maitriser le php et les boucles contrairement à spippdf qui est clef en main.
Démo ? pas jouable car c’est un plugins ’additif’ et pas un plugins dépendant.
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |