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 :

[TCPDF] Enregistrement du fichier PDF dans une base de données


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut [TCPDF] Enregistrement du fichier PDF dans une base de données
    Bonjour,

    Je travail actuellement sur un module permettant de générer des rapports d'activités sous forme de PDF.
    J'arrive à générer le pdf mais impossible de trouver comment l'enregistrer dans la bdd.
    J'utilise la librairie TCPDF et il semble qu'une fois la fonction Output appelée, il est impossible de faire d'autre traitement. J'aimerais donc savoir s'il y a un moyen de faire ce traitement avant.

    De plus, mais ce problème n'est pas lié au précédent. Lorsqu'au lieu de télécharger le PDF je choisi de l'ouvrir dans le navigateur (ff) celui-ci ne fonctionne pas car il tente de l'ouvrir avec l'extension *.pdf.htm alors que le MIME type est définis pour un PDF.

    Si quelqu'un à une idée pour résoudre mes problèmes je lui en serais très reconnaissant.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    J'ai finalement réussit à passer dans ma méthode de sauvegarde du PDF avant de passer dans la méthode Output. Le problème est que, si je ne me trompe pas, pour insérer mon fichier dans ma base j'ai besoin de le mettre dans un blob.
    Malheureusement je ne trouve pas le moyen de récupérer mon fichier sous forme d'une chaine binaire. Si une fonction existe, je ne la trouve pas.

  3. #3
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Bonsoir ! Je ne sais aps si ca réponds à ta question mais lire un ficheir en binaire c'est possible :

    http://fr.php.net/manual/fr/function.fread.php

    Après je ne sais pas ...
    ►Ne pas oublier le

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Merci de ta réponse, malheureusement je ne crois que pas que puisse utiliser cette méthode, ou en tout cas je ne sais pas comment. En effet, l'objet sur lequel je travail n'est pas un fichier mais un objet de type TCPDF, ce n'est qu'au moment de l'appel de la fonction Output qu'il est transformé en fichier pour être téléchargeable.
    Je me trompe peut-être, et si c'est le cas tant mieux, mais je ne crois pas que cela résolve mon problème.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    Est-ce qu'à la génération de ton pdf, tu le stock dans un dossier.

    Si c'est le cas pourquoi ne pas stocker uniquement le nom de ce fichier pour y accèder ultérieurement et le télecharger par exemple.

    Après il est vrai qu'il faudra traiter le temps de "vie" du fichier pdf sur le serveur.
    Mais ça évitera de la stocker dans la base de donnée

    ++

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Désolé de répondre si tard. Lors de la génération du PDF j'offre à l'utilisateur la possibilité d'enregistrer son PDF où il le souhaite, je ne le garde pas en mémoire.
    Mais j'ai finalement contourné le problème. Pour éviter de garder en mémoire une chaine binaire qui ferais quelques centaines de Ko à chaque fois j'ai enregistré dans un champs sérialisé le tableau d'informations qui sert à la génération de mon PDF.
    Ainsi lorsque je veux récupérer les anciens PDF je les re-génère en faite à partir des même infos. Ça me permet d'économiser de la place, et la génération étant rapide ça ne pose pas de problèmes.

    Merci de votre aide.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour,

    Est-ce que tu stockes les informations utilisé pour la génération du pdf dans une base de donnée?

    Car si c le cas plutot que de restocker les infos sous la forme :

    info1,info2,info3

    => decouper en fonction des virgules et refaire la génération du pdf, tu fais une requête qui va rechercher les infos dans ta base et tu régénére le fichier evitant de restocker des infos en double.

    ++

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par narutobaka Voir le message
    Bonjour,

    Est-ce que tu stockes les informations utilisé pour la génération du pdf dans une base de donnée?

    Car si c le cas plutot que de restocker les infos sous la forme :

    info1,info2,info3

    => decouper en fonction des virgules et refaire la génération du pdf, tu fais une requête qui va rechercher les infos dans ta base et tu régénére le fichier evitant de restocker des infos en double.

    ++
    Bonjour,

    Effectivement je stocke dans ma base les informations nécessaires à la génération PDF.
    Par contre je ne pense pas que je stocke des informations en double. Enfaite, ma fonction qui génère le PDF prend en paramètre un tableau contenant les information nécessaires. Donc lors de l'enregistrement du PDF c'est ce tableau qui est sérialisé et enregistré dans la base.
    Ainsi quand on veux visualiser les anciens PDF, je recherche dans la base le champs en question qui est dé-sérialisé pour relancer la fonction.
    Ce tableau ne contient que les informations nécessaires donc je pense que c'est plutôt ergonomique, non?
    Enfaite j'ai pas très bien compris la solution que tu me propose, mais si tu as une idée je suis preneur.

    [Edit]
    Bon après relecture je pense avoir compris ce que tu me propose.
    Enfaite tu voudrais que je fasse une requête qui récupère les informations dans la bdd comme lors de la première génération, en gros, celle qui me permet de construire le tableau en question.

    Le problème c'est que ces informations sont issue de plusieurs tables avec des conditions différentes. De plus avant de générer le PDF j'en propose la visualisation sous forme de tableau HTML, donc ces informations sont récupérer en plusieurs fois.
    Donc effectivement je stocke les informations de manière redondante, je n'y avait pas pensé, mais je vois mal comment je pourrais faire autrement.
    [/edit]

    Mumux,

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    Bonjour ,

    Faire une requête spécifique pour la génération du pdf.

    Je suis justement en train de mettre en place ce genre de solution pour un projet sur lequel je travail . J'ai développé un petit module d'impression.

    Maintenant attention je ne dis pas que c la meilleur solution, juste une idée permettant d'éviter d'avoir de la redondance dans la base.

    Ma méthode ne nécessite que la création d'une nouvelle requête.
    Et vu que tu fais déjà une requête pour reconstruire le pdf je n'ajoute pas de requête supplémentaire, il ne faudrais que remplacer cette requête.

    Après tout dépend de la complexité des informations à récupérer.

    Donc ma solution à juste l'avantage d'éviter de stocker de l'information déjà présente dans la base.

    Après faut faire un choix.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/05/2015, 17h43
  2. [FPDF] Enregistrement du fichier PDF dans une base de données
    Par christuf dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 28/10/2009, 22h16
  3. Importer un fichier pdf dans une base de donnée sqlserver
    Par kadiato dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/03/2009, 14h00
  4. enregistrement de fichier XML dans une base SQL
    Par yelkam dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 18/07/2007, 08h58
  5. Réponses: 8
    Dernier message: 26/04/2007, 10h31

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