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

Langage PHP Discussion :

Ouverture fichier PDF


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de alain78
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Points : 97
    Points
    97
    Par défaut Ouverture fichier PDF
    Bonjour,

    Voici mon problème et je n'arrive pas à comprendre le pourquoi de ce problème.

    J'ai 2 scripts situés dans le même répertoire qui comporte des fichiers pdf.

    Le premier script (biblio_lire )ouvre bien le fichier PDF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (file_exists($file)) {
        $chemin_fichier=$dossier.$file;
    	ouvre_pdf($chemin_fichier);
    }
    Le second script (biblio) n'ouvre pas le fichier PDF et remplit l'écran de caractères ASCII.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    		if (file_exists($file)) {
        		$chemin_fichier=$dossier.$file;
    			ouvre_pdf($file);
    		}
    J'ai vérifié les points suivants:

    1- le nom du chemin et du fichier sont dans les 2 scripts strictement identiques.

    /home/www/78f7c147f45f004e323b8733ea2d94c0/web/crise/biblio/fichiers/CMS17191331985574_Le_risque_electrique.pdf

    2- j'ai essayé avec IE, FF et Chrome, les 3 navigateurs se comportent de la même manière

    la fonction ouvre_pdf est utilisée par les 2 scripts.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function ouvre_pdf($fichier) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($fichier));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        // désactivation du cache
        header('Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0');
        header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé
        header('Pragma: public');
        header('Content-Length: ' . filesize($fichier));
        ob_clean();
        flush();
        readfile($fichier);
        return;
    }
    J'ai même fait un copié collé du script qui fonctionne vers le script qui ne fonctionne pas. Le résultat ne change pas.

    J'ai tout vérifié et je ne comprend pas pourquoi ce bug.

    Avez vous une piste à me suggérer ?

    Merci à vous et bonne journée.
    Donnes un poisson à un homme tu le nourris un jour, apprends lui à pécher tu le nourris toute sa vie.

  2. #2
    Membre actif Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Points : 232
    Points
    232
    Par défaut
    Ton problème est un peut mystérieux. La seul solution que je verais c'est que ton deuxième script soit encodé en UTF8 "avec BOM", ce qui empêcherais l'envoie des headers (ce qui impliquerais aussi que les erreurs ne soient pas affichées).

    Essaye de remplacer un fichier par l'autre, ou de convertir ton deuxième en utf8 sans bom.

    Si ce n'est pas ça, je ne voir pas trop d'ou ça peut venir
    • Quand la discutions est terminée, cliquez sur , Pensez y !
    • Vous voyez un message pertinent et de qualité ? Votez pour ce message !

  3. #3
    Membre régulier Avatar de alain78
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Points : 97
    Points
    97
    Par défaut Caractère fantome
    Merci Korri,

    J'ai résolu mon erreur mais il n'y avait aucune erreur de codage.

    J'ai simplement retapé au clavier les 2 lignes que j'avais isolé comme "responsables" et tout est reparti.

    Je suppose qu'il y avait un caractère caché. Pourtant j'utilise un bon éditeur (PSPAD) depuis des années.

    MErci encore.

    Au fait : qu'est ce qu'un BOM ?
    Donnes un poisson à un homme tu le nourris un jour, apprends lui à pécher tu le nourris toute sa vie.

  4. #4
    Membre actif Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Points : 232
    Points
    232
    Par défaut
    Citation Envoyé par alain78 Voir le message
    Au fait : qu'est ce qu'un BOM ?
    Le BOM ou IOO ( en Français ) est un caractère ajouté au début des fichiers/chaines pour indiquer quel encodage est utilisé (UTF-8, UTF-16 Big Indian, UTF-16 Little Indian, UTF-32 etc..), ce caractère est censé être invisible. Mais si ton serveur est configuré pour envoyer les fichiers en ISO-8859-1 (même si tu à mis la méta utf-8, mais que le serveur met du iso-88591-1 par défaut), le BOM sera interprété et affiché, ce qui empêchera l'envoi des headers, car comme on le sait, il est impossible d'envoyer des header après avoir affiché une chaine.

    Plus d'infos là :
    http://fr.wikipedia.org/wiki/Marque_...dre_des_octets
    Ou là pour le problème avec le web (en anglais) :
    http://juicystudio.com/article/utf-byte-order-mark.php
    • Quand la discutions est terminée, cliquez sur , Pensez y !
    • Vous voyez un message pertinent et de qualité ? Votez pour ce message !

Discussions similaires

  1. Ouverture fichier PDF
    Par vinystic dans le forum Paradox
    Réponses: 2
    Dernier message: 05/04/2012, 17h13
  2. Ouverture fichier PDF généré avec Itextsharp
    Par Cheeper dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/09/2010, 14h32
  3. Problème ouverture fichier pdf
    Par rorobase dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/10/2008, 11h29
  4. ouverture fichier pdf client
    Par joe12260 dans le forum Débuter
    Réponses: 6
    Dernier message: 11/04/2008, 14h04
  5. Ouverture fichier pdf
    Par karibouxe dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 30/05/2007, 11h57

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