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] Problème lors de l'ouverture du PDF par le navigateur


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut [FPDF] Problème lors de l'ouverture du PDF par le navigateur
    Bonjour,

    Je développe un site intranet. Une fonction (fpdf) crée un pdf et le télécharge sur le poste client.
    1- Si j'utilise l'option "F" dans output le fichier est bien enregistré et lisible sans pb.
    2- Si j'utilise l'option "D" le fichier n'est pas lisible et Acrobat affiche l'erreur "Une erreur est survenue lors de l'ouverture du document. Le fichier est endommagé et n'a pas pu être réparé".
    Dans Acrobat j'ai décoché l'option "Ouvrir dans le navigateur" et ça n'a rien changé.
    De toute façon c'est une appli client légé donc il n'est pas question de passé sur tous les postes pour reparamètrer Acrobat.

    Avez-vous une idée sur la question ? Merci.

  2. #2
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    Bonjour,
    ce ne serait pas u probleme d'entete? quelque chose qui est transmis au navigateur qui ne devrait pas l'etre
    mais pourquoi tu cours?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par gofono_bass
    Bonjour,
    ce ne serait pas u probleme d'entete? quelque chose qui est transmis au navigateur qui ne devrait pas l'etre
    Peux-tu préciser ta remarque ?
    NB : en dehors de l'option je ne change rien au prg -> le fichier téléchargé ("D") est illisible alors que le fichier sauvegardé ("F") sur le serveur est OK.

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    a ce moment là, enregistre le et fais une redirection vers le fichier
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par siddh
    a ce moment là, enregistre le et fais une redirection vers le fichier
    Effectivement c'est une façon de contourner le pb.
    Le fichier serait créé sur le serveur dans un temp. La difficulté est que le fichier est constitué à partir de paramètres propres à chaque utilisateur. Donc il y aurait autant de fichiers créés que de demandes utilisateurs.
    Il faudrait en plus créer ces fichiers avec des noms uniques et ensuite les supprimer.
    C'est beaucoup plus lourd !

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ta fonction fpdf c est toi qui l'a ecrite ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    Oui.
    Voici le code.
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Require("../lib/fpdf/fpdf.php");
     
    class PDF extends FPDF
    {
    	//En-tête
    	function Header()
    	{
    		global $titre;
    		global $tcolor1;
    		global $tcolor2;
    		global $tcolor3;
    		//Logo
    		$this->Image('../images/logo.jpg',10,8,25,25);
    		//Couleurs du cadre, du fond et du texte
    		$this->SetDrawColor(255,255,255);
    		$this->SetFillColor(255,255,255);
    		$this->SetFont('Arial','I',6);
    		$this->SetTextColor($tcolor1,$tcolor2,$tcolor3);
    		// Date
    		$this->Cell(0,10,date_jour(),0,0,'R');
    		// Positionnement sous le logo
    		$this->Ln(10);
    		//Calcul de la largeur du titre et positionnement
    		$w=$this->GetStringWidth($titre)+6;
    		$this->SetX((210-$w)/2);
    		//Titre centré
    		$this->SetFont('Arial','I',15);
    		$this->Cell($w,9,$titre,1,0,'C',1);
    		$this->Ln(20);
    	}
     
    	//Pied de page
    	function Footer()
    	{
    		global $tcolor1;
    		global $tcolor2;
    		global $tcolor3;
    		//Positionnement à 1,5 cm du bas
    		$this->SetY(-15);
    		//Police Arial italique 8
    		$this->SetFont('Arial','I',8);
    		$this->SetTextColor($tcolor1,$tcolor2,$tcolor3);
    		//Numéro de page
    		$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
    	}
    }
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    	// Inclusion pdf
    	include("../pdf/creation_pdf.php");
    	// Instanciation de la classe dérivée
    	$pdf=new PDF();
    	$titre = "Annuaire interne de la mairie de Vigneux s/Seine";
    	$tcolor1 = 128;
    	$tcolor2 = 128;
    	$tcolor3 = 192;
    	$pdf->SetTitle($titre);
    	$pdf->AliasNbPages();
    	$pdf->AddPage();
     
    	$resultat = mysql_query($_POST["requete"],$base);
    	if(controle_table($resultat,$requete))
    	{
    		$pdf->SetDrawColor(51,153,102);
    		$ligne = 0;
    		while ($annuaire = mysql_fetch_array($resultat))
    		{
    			if ($ligne%38 == 0)
    			{
    				// Entêtes des colonnes
    				$pdf->SetFillColor(255,255,255);
    				$pdf->SetTextColor(51,153,102);
    				$pdf->SetFont('Arial','',10);
    				$pdf->Cell(30,6,"Nom",1,0,"C",1);
    				$pdf->Cell(30,6,"Prénom",1,0,"C",1);
    				$pdf->Cell(60,6,"Service",1,0,"C",1);
    				$pdf->Cell(25,6,"N° tél 1",1,0,"C",1);
    				$pdf->Cell(25,6,"N° tél 2",1,0,"C",1);
    				$pdf->Cell(25,6,"N° tél 3",1,1,"C",1);
    				$pdf->SetTextColor(128,128,192);
    				$pdf->SetFont('Arial','',7);
    			}
    			if ($ligne%2 == 0)
    				$pdf->SetFillColor(255,255,255);
    			else
    				$pdf->SetFillColor(255,255,213);
    			$ligne++;
    			// Calcul de la largeur du titre et positionnement
    			$w=$pdf->GetStringWidth($annuaire[annu_nom])+6;
    			// Ecriture des données dans cellules
    			$pdf->Cell(30,6,$annuaire[annu_nom],1,0,"",1);
    			$pdf->Cell(30,6,$annuaire[annu_prenom],1,0,"",1);
    			$pdf->Cell(60,6,$annuaire[annu_libserv],1,0,"",1);
    			$pdf->Cell(25,6,$annuaire[annu_tel1],1,0,"C",1);
    			$pdf->Cell(25,6,$annuaire[annu_tel2],1,0,"C",1);
    			$pdf->Cell(25,6,$annuaire[annu_tel3],1,1,"C",1);
    		}
     
    	}
    	$pdf->Output('annuaire.pdf','D');

  8. #8
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    au fait, je viens de me rappeler un truc que j'ai lu quand j'ai commencé avec les pdf sous php (y a vrauiment pas longtemps!). Un probleme non pas lié a php mais au plugin PDF sous IE, il semblerait qu'il soit encore tres buggé, et peu stable. Peut-etre que ton probleme vient tout simplement de la??
    mais pourquoi tu cours?

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    as tu essayé sans le deuxieme paramètre ou avec I pour envoyer directement au navigateur ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  10. #10
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    oui gofono, mais souvent c est pour l'affichage que ca #### car il affiche des fois les caracteres binaires au lieu d un pdf
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par siddh
    as tu essayé sans le deuxieme paramètre ou avec I pour envoyer directement au navigateur ?
    Il affiche une page blanche.

  12. #12
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    et en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-type: application/pdf');
    avant le output
    :
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par siddh
    et en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-type: application/pdf');
    avant le output
    :
    Ca ne change rien.

  14. #14
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ca le fais avec tous les navigateurs ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par siddh
    ca le fais avec tous les navigateurs ?
    Je ne sais pas ici on utilise uniquement IE.

  16. #16
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    apparement faut desactiver la compression dans le php.ini ou avec un htaccess
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  17. #17
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    tu met un .htaccess dans le repertoire ou sont les fichiers temporaires générés par fpdf et tu met ca dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <IfModule mod_gzip.c>
      mod_gzip_on no
    </IfModule>
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    J'ai positionné zlib_output_compression à Off dans php.ini et l'ouverture du pdf se fait correctement sur à travers IE.

    Seulement (Tu vas dire que j'abuse...) cette solution ne me satisfait pas complètement.

    Mon pdf est constitué de données basées sur le résultat d'une requête.
    Or si je veux que le pdf s'affiche sur une fenêtre indépendante il faut que je passe la requête dans l'adresse et ça c'est pas terrible.

    Sais-tu comment faire autrement ?

Discussions similaires

  1. [virus Ahr.exe] Problème lors de l'ouverture de C
    Par hocine dans le forum Windows XP
    Réponses: 2
    Dernier message: 23/07/2007, 02h45
  2. Réponses: 9
    Dernier message: 15/03/2007, 16h17
  3. [VB 6] Problème lors de l'ouverture d'Excel depuis VB
    Par pom dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 10/02/2007, 20h50
  4. Problème lors de l'ouverture de FreeReport
    Par EssaiEncore dans le forum Composants VCL
    Réponses: 1
    Dernier message: 28/09/2005, 14h56

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