IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[FPDF] FPDF et "concaténation"


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 27
    Points
    27
    Par défaut [FPDF] FPDF et "concaténation"
    Bonjour à tous,

    J'ai créé 2 scripts FPDF, un pour générer un document PDF "A" et l'autre pour générer un document PDF "C" en fonction de données stockées dans une base. Les deux scripts fonctionnent indépendamment sans problème en les appelant chacun par un lien différent.
    (J'ai un 3ème fichier PDF "B" qui lui a été mis en ligne par l'utilisateur.) J'aimerais qu'une page génère ces 2 fichiers "A" et "C" et concatène les 3 fichiers "A", "B" ET "C" avec la fonction merge de fpdf.
    Lorsque j'essaie de générer les 2 PDF "A" et "C" en appelant les 2 scripts sur la même page de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    require('generate_A_pdf.php');
    require('generate_C_pdf.php');
    J'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error:  Cannot declare class PDF, because the name is already in use in /home/mao/sites/osec_v3/pages/pedagogie/tp_pdf_fc_1.php on line 0
    Normal, mais je n'arrive pas à la corriger. J'ai essayé avec les espaces de noms namespace, sans succès.

    Connaîtriez-vous une méthode pour contourner ce problème et pouvoir appeler plusieurs fois une même classe à partir de scripts différents ?

    Merci pour votre aide,
    Olivier

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    utilise incude_once ou require_once pour appeller la classe dans tes deux fichiers.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Merci pour l'aide,
    mais j'avais essayé les 4 possibilités (require, require_once, include, include_once), j'obtiens toujours la même erreur. À moins que ce ne soit pas au bon endroit.

    Merci quand même.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ça ne doit pas être au bon endroit.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    La vérité étant ailleurs j'ai cherché sans trouver, et du coup j'ai grugé.
    J'ai créé une boucle avec une redirection sur la même page qui permet de générer le premier fichier "A", ensuite le troisième "C", pour finir par concaténer et afficher les 3 fichiers "A", "B", "C" (en supprimant à la fin les 2 fichiers générés "A" ET "C").
    Je vais quand même essayer de comprendre comment appeler deux fois une même classe...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Justement il ne faut pas la déclarer deux fois, d'où le require_once() sur le code de la classe.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Tu veux dire n'appeler qu'une fois fpdf.php par une ligne de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once(ROOT . 'structure/fpdf/fpdf.php');
    avant d'appeler les deux scripts de génération des fichiers PDF ? (testé sans résultat)
    Apparemment ce qui bloque, c'est de déclarer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class PDF extends FPDF {}
    à deux reprises qui pose problème.
    J'ai essayé de créer 2 fichiers fpdf.php et fpdf1.php avec les classes FPDF et FPDF1 en appelant les classes ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class PDF extends FPDF {}
    et
    class PDF1 extends FPDF1 {}
    Mais au final, j'aurais 4 fichiers PDF à concaténer, ça deviendrait un peu lourd et pas propre comme méthode...

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi ta classe PDF est déclarée deux fois ? Il devrait être incluse elle aussi.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Elle est incluse 2 fois, parce que comme indiqué au début j'utilise des scripts indépendants servant à générer les PDF individuellement. Ne voulant pas recopier ces scripts dans un fichier permettant la concaténation, j'aimerais pouvoir faire appel à eux.
    Pour que ce soit plus explicite, voici un exemple de page sur lequel cela peut être testé : https://osec.fr/bacpromei-lptarnos/tp_detail-309.html


    1. Le bouton "Page de Garde - PDF" appelle un script qui génère la page de garde seule (1).
    2. Le bouton "Fiche Contrat - PDF" appelle un script qui génère la fiche contrat seule (2).
    3. L'oeil vert permet de télécharger le document PDF qui est un simple fichier PDF (LibreOffice) mis en ligne.


    Quant au bouton "Génrérer le document PDF complet" appelle les 2 scripts (1) et (2) pour créer le fichier de concaténation.

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si les deux classes PDF ne sont pas identiques, elles ne doivent pas avoir le même nom.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Concaténation de plusieurs valeurs : des quotes qui manquent ?
    Par Palsajicoco dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/03/2011, 14h26
  2. [MySQL] quote ou double quote avec FPDF
    Par phils210 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/01/2011, 23h45
  3. [FPDF] Concaténer plusieurs PDF
    Par caro_tpl dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/10/2007, 18h19
  4. [FPDF] Concaténation de PDF
    Par TomZ dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 13/04/2006, 14h17
  5. Quotes dans TFilenameEdit (RXLib)
    Par AnnSo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2003, 20h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo