PHP et FPDF: une sortie PDF "cryptée" [resolu]

bonsoir,

en meme temps de me mettre a faire des "export" en word(cf mon autre topic), je me met au PDF.

j’utilise FPDF, malheureusement voici le resultat de mon code:


%PDF-1.3 3 0 obj <> endobj 4 0 obj <> stream xœÕ•ÍnÚ@Çï<ÅÛÃÎ~z{k¨­R©)îXaccÚûH}-Þ¢kñڎPRåÙ²äñÏ3ÿٙÙåðeÀPø=¸a+PI`þ"‰‚P(ˆ˜ÄÈÂíFŸ Æ[¸\Å0šFÆ ¾ƒI\™!Y0Â`d žÃ»ÙÇñ$ž\¿‡xuBHÊ*XÀ ÅÞÁ|_·y \´:D%aòñfIš—ÃI™º½]ë&GÂFâ׸1;⌵t*¦³»_éò¿\GCÎÄã*¯Ÿ/72eù'÷rŠÅcqYS\/•†ˆê‰ê‡d®àÞ·Ìj™ 
õ-Ã+¤ ýýpw(\~ë|Ýæ®tÙ)¶ï"²õ œ¼’¤ªOºåŒëÐíø°KyR¦Û¼q($CzŽL!9ږÌoEú?ò´LÒ½ŠÇ›}’—iyx=yñ¶L‚å«ëäG‚÷êd¬®"làün,*Ì Gkpz¯‰–¥!ú>Ž–§ˆn??jž¨2ÉÖÙÆß½.¸¯CœÖ1Ðܶ4DßÇYsŸè6[ yµ\­—«åzÕ«å
ˆ]BòãT6ªÛ–†èû8«îݞ T“ÒoKïÛRe®îËçîôvçî‚ÞþÜ5b›¤Žçµöû®ª™êö›”ÕFsç àS ?·û2LWaIãêèÕù endstream endobj 1 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> /Length 1520>> stream x^íœi“œ6†¯]N*?9_Rù½vRÎÎÁRçm‰ÁBj i`]CQ»®š>žîÖeŸˆ¨z]ߚªOU'U}þ\Ä]U¤ù>Qõö¦ªOo‘Ÿi¸N§Seÿôº^x@uŠÚ–TC¤:"é2­µR ?'ÌýUU¯{ð@¤Kݏõg ÇBfÚNä[準t£Iµ†¹(ì^Ì
³KÑ  û2Tofc€9¥ lMg~Ŗ:asE½ó
a™eeµöpQÃýJԋcN+ÒÌúë=²ÈáCsæŠºæƒ —G9_ÅZ7Ì÷€#Ü`ŽÇtøÅWLs}1·©·.³èPÌÉՋ¨s¤0ŒpÚ0‡ÆÊÀá?ˆ±1l.¯a²x ‘,_—Î!Fρ9&gY™ËnÏK ¼îå+aGƂ5䡝!/òêa"ÇI5z¿z†GN붏—b·Ë´$áHs~ #˜C¡p¸Å½upÅᘋÞÒ,Þ÷l’?ñË2‡úÆӉ¬Ì sTâSù3þ<[˨d <Ÿ+!³¥æN-Vx>ºun¥y•Ð0¢Î9˜‘¹VÉQežÚü„š´Ñvgµ®©¾Qscìú¥kH€9^¤p\%4ú¿¥¶ƒ P «Ä{k “ü:¿(·„ªBïKÔež©©µws³ªøWBCLÛH¡ &Ö³t?ƒÀ™’µTËÈeFs‰³aãšæ}uI“éWÕ̱¼¨s5ѕè>/(%4ôÈÔº× %(Ճø‹/særÄ×HaÃÙ+<ˆ/9éL‹ÞdTÒÊ}½ÝŸ@çô^v1k¤sÈQÆÏiMً9XQs©Ãö3Çe“ðÃfÔ¨"ööZ«a۟t®d L°§W°¦ÎžŸÅ<Ùûžƒ*ÉG¨SÃm'3ìüÌq‚¹Vü3j(IB˜ÐkòÐÞôÖae؝0f^ˆÜHûÊP݇c¢$yåX«—~ ËØaRߋ¬\ÛÂÌÁçH/.6õ‡D1‡(ö³Ãék»1gGqf³ŸU{ „ßàìLÊÞóáÿ c¾¡ âù™sbçá`øú›}X^½|£›ˆÖM8þå ÛXÉ EMuø‰ÛDgs÷âñ=‚AkmKÝèÊ á"*Ov„cs˜«òù9ÒPê¬éÝT4›Z8àTß©®éz§kÛ»3髹kó–Í;u$æ~ûÝßs×À•Ó)—Ÿ!¢„ÅÎޖ<î¬ötÆÏËÏO¹,pÓ l c˜p=slÏk::ƒ-m˜‘­aÀu<å1·ºRWS×ðIONø>ç+–àœIÊ[THux'—ú{T©;(sÆL÷'€Í5’9&ÍRº+sep˜¿j˜”Y/áh,!Sj>¹d÷`ˆÓÆlç‘P\ëOp„˜KÖÐSq³È\ Éß[
ºàÖêesþÄH“9öï
†ÿvú†F2ef24 ¤h?Ýy­$#ÏXv²’ÆœCÔí{²(ù¼uîñÛ?á4gÞtÀØy4uuž71·Xðߞt™¯Zåò¤¿îìÃÜFÛüSdáþq}šØ±LìQ:bˆ˜œ Ø®ašá[ƒ+žÁÜ"V_ÿþò‡ÕØS6‚ÍZhsð±ÒÌa½Ê¬àǟ+ÑsWÄ ãgRÿ‰£rüaÇ[®8Ï:^ûƒÚ‰~ؼÃãvOo­sÔ¤ëÍì]Mÿ¶cÀW endstream endobj 2 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F1 5 0 R /F2 6 0 R >> /XObject << /I1 7 0 R >> >> endobj 8 0 obj << /Producer (FPDF 1.53) /CreationDate (D:20060926204120) >> endobj 9 0 obj << /Type /Catalog /Pages 1 0 R /OpenAction [3 0 R /FitH null] /PageLayout /OneColumn >> endobj xref 0 10 0000000000 65535 f 0000000742 00000 n 0000002787 00000 n 0000000009 00000 n 0000000087 00000 n 0000000829 00000 n 0000000930 00000 n 0000001026 00000 n 0000002911 00000 n 0000002987 00000 n trailer << /Size 10 /Root 9 0 R /Info 8 0 R >> startxref 3090 %%EOF 

donc c est bien joli…mais pas tres comprehensible

je ne comprends pas pourquoi ca fait ca, ayant ajouter les header PDF dans mon code et activer l extension pdf dans easyphp…

voici mon code php:


	define('FPDF_FONTPATH','fpdf/font/');
	require('fpdf/fpdf.php'); 
	//Create a new PDF file
	$pdf=new FPDF();
	$pdf->Open();
	$pdf->AddPage(); 
	$i=0;
	$pdf->Image('images/sad.png',10,8,33); 
	$pdf->Ln(20);
	$pdf->SetFont('Arial','B',16);
	$pdf->Cell(40,10,'SA'); 
	$pdf->SetFont('Arial','B',16);
	$pdf->Cell(40,10,'45 rue des ecureuil volant'); 
	$pdf->SetFont('Arial','B',16);
	$pdf->Cell(40,10,'45345 Banqueroute'); 
	$pdf->SetFont('Arial','B',16);
	$pdf->Cell(40,10,'Tel: 54 87 78 34 378'); 
	$pdf->SetFont('Arial','B',16);
	$pdf->Cell(40,10,'Fax: 53 78 44 78 898'); 

    $date=date('Y-m-d');
	$date_fr=date('d/m/Y');
	include '../connexion.php';
	// Requete - Execution  
	$sql_recherche  = "SELECT * FROM client WHERE id_client='$id_client'";   
	$req_recherche = mysql_query($sql_recherche) or die(mysql_error());   
	while($data_recherche = mysql_fetch_array($req_recherche))   
  {
  $client=$data_recherche['Nom'];
  $adresse=$data_recherche['Adresse'];
  $ville=$data_recherche['ville'];
  $code_postal=$data_recherche['code_postal'];
  }
	$pdf->Cell(80); 
	$pdf->Cell(80); 
	$pdf->SetFont('Arial','B',16);
	$pdf->Cell(40,10,$client); 
	$pdf->Cell(40,10,$adresse); 
	$pdf->Cell(40,10,$code_postal.$ville); 
	
	$pdf->Cell(40,10,'Le '.$date_fr); 

	if($modifier==1)
  $pdf->Cell(40,10,'Devis n°'.$numero_devis_modifier); 
  else
  	$pdf->Cell(40,10,'Devis n°'.$num); 

	
	//Fields Name position
	$Y_Fields_Name_position = 10;
	//Table position, under Fields Name
	$Y_Table_Position = 16;
	
	//First create each Field Name
	//Gray color filling each Field Name box
	$pdf->SetFillColor(255,25,62);
	//Bold Font for Field Name
	$pdf->SetFont('Arial','B',10);
	$pdf->SetY($Y_Fields_Name_position);
	$pdf->SetX(45);
	$pdf->Cell(30,6,'Référence Sad',1,0,'L',1);
	$pdf->SetX(70);
	$pdf->Cell(50,6,'Désignation',1,0,'L',1);
	$pdf->SetX(120);
	$pdf->Cell(30,6,'Prix Unitaire',1,0,'L',1);
	$pdf->SetX(120);
	$pdf->Cell(30,6,'Quantité',1,0,'L',1);
	$pdf->SetX(120);
	$pdf->Cell(30,6,'Prix Total',1,0,'L',1);
	$pdf->Ln(10);
	for($i=0;$i<=9;$i++)
  {
  $quantite_temp='quantite_'.$i;
  $quantite=$$quantite_temp;
  if($quantite!=0)
  	{
  	$designation_temp='designation_'.$i;
  	$designation=$$designation_temp;
  	$ref_sad_temp='ref_sad_'.$i;
  	$ref_sad=$$ref_sad_temp;
  	$prix_achat_temp='prix_achat_'.$i;
  	$prix_achat=$$prix_achat_temp;
  	$coeff_temp='coeff_'.$i;
  	$coeff=$$coeff_temp;
  	if($coeff_global!=1)
    $coeff=$coeff_global;


  	//Now show the 3 columns
  	$pdf->SetFont('Arial','',12);
  	$pdf->SetY($Y_Table_Position);
  	$pdf->SetX(45);
  	$pdf->MultiCell(25,6,$ref_sad,1);
  	$pdf->SetY($Y_Table_Position);
  	$pdf->SetX(70);
  	$pdf->MultiCell(50,6,$designation,1);
  	$pdf->SetY($Y_Table_Position);
  	$pdf->SetX(120);
  	$pdf->MultiCell(30,6,$prix_achat*$coeff,1,'L');
  	$pdf->SetY($Y_Table_Position);
  	$pdf->SetX(120);
  	$pdf->MultiCell(30,6,$quantite,1,'L');
  	$pdf->SetY($Y_Table_Position);
  	$pdf->SetX(120);
  	$pdf->MultiCell(30,6,$coeff*$prix_achat*$quantite,1,'L');
  	
  	$pdf->SetY($Y_Table_Position);  
  	$pdf->SetX(45);
  	$pdf->MultiCell(105,6,'',1);
  	$i = $i +1;    
  	// remplace les champs
  	$total=$coeff*$prix_achat*$quantite+$total;
  	}
  }  

	$pdf->Cell(40,10,'Montant total de '.$total.' € HT pour le devis');
	$pdf->Cell(40,10,$remarques);  
	$pdf->Output(); 

si vous avez des remarques je suis preneur!

merci

Salut, moi j’obtient aussi ce “message” quand j’effectue du debugage sur un code utilisant FPDF et que j’effectue simplement un refresh à chaque modification du code.

Il semblerait que ce soit le corps du document pdf, donc essaye de reprendre le processus de navigation intial dans une nouvelle instance de ton navigateur jusqu’a la generation du pdf pour voir si le probleme persiste.

Voila en esperant que cela puisse t’aider un petit peu

j ai tout relance du debut de mon code mais c apreil

j ai l impression effectivement qu il ne sait pas que c est du PDF…resultat il le "traduit" en format texte

Pourrais-tu décrire un peu plus ta méthode pour générer ce PDF?

j ai un formulaire que rempli l’utilisateur

après validation, ca ouvre une nouvelle page qui met le tout enforme comme il faut

ensuite sur cette page en question, j offre a l utilisateur 3 choix:

  • soit imprimer
  • soit valider le tout definitivement
  • soit exporter sous format word et/ou pdf

dc le fichier exporte est le meme que celui de la mise en forme, maus avec une extension differente

Dans un premier temps tu peux deja verifier que la génération d’un pdf se fait bien, c’est a dire:

tu crée une page avec un PDF test et tu pointe vers cette page au moment de l’exportation sous PDF:

testPDF.php

<?
// Appel de la class PDF
define('FPDF_FONTPATH','fpdf/font/');
require('fpdf/fpdf.php');

// Création d'un nouveau document PDF
$pdf=new FPDF();
$pdf->Open();

// Construction du PDF
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World !');

// Génération du PDF
$pdf->Output();
$pdf->Close();
?>

Edit : Je viens de tester ton script et il fonctionne chez moi (a part ce ki concerne les image png que je n’est pas et la partie sur la requete sur ta base mais je les ai mis en commentaire pour les zapper ^^)

Edit 2 : essaye aussi de vider ton cache cela peut etre la cause de certain ennui des fois ^^

j ai suivi tout a l heure le meme raisonnement que toi.

j ai teste le meme code que tu me donnes et ca a marche du premier coup

finalement parès verif de mon code, j ai essaye de supprimer des lignes qui était inutiles (tout ce qui touche la presentation) pour limiter la source d erreur et je me suis apercu qu il y avait la ligne:

$pdf -> ln();

après verif, des que je l ai supprime, tout a correctement marche, et depuis ca marche plutot pas mal, j ai remis petit a petit la mise en forme ( et j ai encore pas mal de boulot) mais le pdf ressort bien.

je te remercie de ton aide en tout cas!!!

j ai corrige le premier post pour donner le code exact

De rien :sol: