Stocker et afficher des PDF en MySQL et PHP

Messages postés
2
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
2 avril 2008
- - Dernière réponse :  KIKOU8 - 16 nov. 2012 à 20:26
Bonjour à tous,

Voici ce que je désire réaliser :
Dans une table d'une DB mysql, je désire avoir 2 champs : une zone de texte (un titre) et un champ capable de stocker le contenu d'un pdf.
Je désire pouvoir ajouter (supprimer, modifier) des enregistrements. Lors d'un ajout il s'agirait de taper le titre et de donner le chemin d'accès local à un fichier pdf. Le contenu de ce fichier pdf devrait être stocké dans le champ de la table.
En visualisation, je désire obtenir une liste avec les titres et à côté de chaque titre un bouton permettant d'afficher le contenu du champs pdf dans acrobat reader.

Mes questions sont :
- quel type de champ utiliser dans la table pour recevoir le contenu du pdf ?
- comment envoyer le contenu du pdf dans le champ?
- comment afficher le contenu du champ dans acrobat reader ?

C'est surement très basique mais je débute en php et mysql. Soyez indulgents... Un bout de code m'aiderait grandement, je vous en remercie d'avance.

Marc.
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
75
Date d'inscription
mardi 20 novembre 2007
Statut
Membre
Dernière intervention
9 janvier 2009
2
2
Merci
Salut merou63,

Pourquoi veux tu stocker les PDF dans la base de données?
Tu peux tout simplement les stocker sur ton serveur Web (Apache) dans un répertoire quelconque.

Sinon si tu désires vraiment stocker ton pdf dans un champ de MySQL, je te conseillerai d'utiliser un champ de type BLOB.

Ensuite pour envoyer le contenu du PDF dans le champ il faut tout d'abord uploader le PDF (donc le téléchager coté serveur d'où la première proposition). Puis il faut lire le contenu du fichier avec une fonction du style de file_get_contents.

Pour finir pour afficher le contenu du PDF après il faudra récupérer le contenu et modifier les entêtes de la page PHP pour qu'elle soit considérée comme un PDF.

Exemple :

<?php
    /* Tu récupères le contenu du champ dans ta base avec une belle requete SQL */

    /* Tu changes l'entête pour que le navigateur comprenne bien que c'est un PDF */
    header('Content-type: application/pdf');

    /* Tu affiches le contenu du champ */
    echo
($content);
?>

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 129 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Axe971
Messages postés
2
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
2 avril 2008
0
Merci
Bonjour Axe971,
Merci beaucoup pour la réponse.
J'ai réalisé la 1ère partie du travail (l'encodage), me reste la visualisation.
Gràce à tes explications, je pense y arriver.
Merci encore,
Marc.
Commenter la réponse de merou63
Messages postés
75
Date d'inscription
mardi 20 novembre 2007
Statut
Membre
Dernière intervention
9 janvier 2009
2
0
Merci
De rien. C'est un plaisir de pouvoir aider ;)
Commenter la réponse de Axe971
Messages postés
1
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
8 octobre 2010
0
Merci
Bonjour.

J'ai essayé cette méthode, à savoir :
<?php
    /* Tu récupères le contenu du champ dans ta base avec une belle requete SQL */

    /* Tu changes l'entête pour que le navigateur comprenne bien que c'est un PDF */
    header('Content-type: application/pdf');

    /* Tu affiches le contenu du champ */
    echo($content);
?>


et j'ai une erreur disant que le pdf est endommagé et n'a pas pu être réparé, après quelque tests il apparaitrait que cet erreur apparaisse uniquement pour les pdf en version 1.3 (les 1.4 étant correctement visualisés).

Serait il possible d'avoir un exemple fonctionnel ?
(ou a défaut quelques conseils ? ^^)

En vous remerciant d'avance.

PS : désolé pour le léger déterrage de topic
Commenter la réponse de AlexMetaleu
-1
Merci
BONJOUR,

j'aimerai savoir comment faire pour réduire la taille d'un fichier PDF stocker dans une base de donnée MYSQL et récupérer et zipper et l'envoyer en entête.
Commenter la réponse de KIKOU8