diff -urN fpdf153.orig/FAQ.htm fpdf153/FAQ.htm --- fpdf153.orig/FAQ.htm 2008-01-09 15:05:04.000000000 +0100 +++ fpdf153/FAQ.htm 2008-03-16 16:23:00.000000000 +0100 @@ -44,7 +44,7 @@
  • 2. Lorsque j'essaie de créer un PDF, plein de caractères bizarres s'affichent à l'écran.

    -Ces caractères "bizarres" sont en fait le contenu réel du PDF. Ce comportement est un bug d'IE. +Ces caractères "bizarres" sont en fait le contenu réel du PDF. Ce comportement est un bug d'IE6. Lorsqu'il reçoit d'abord une page HTML, puis un PDF à partir de la même URL, il l'affiche directement sans lancer le plug-in Acrobat. Cela arrive fréquemment en cours de développement : à la moindre erreur de script, une page HTML est envoyée, et après correction, le PDF arrive. @@ -72,7 +72,7 @@ astuce pour dépasser cette limite : terminer l'URL par .pdf, ce qui trompe IE. Si vous utilisez un formulaire, il suffit de rajouter un champ caché en dernière position :
    -
    <INPUT TYPE="HIDDEN" NAME="ext" VALUE=".pdf">
    +
    <input type="HIDDEN" name="ext" value=".pdf">
    L'utilisation de session PHP cause également souvent des dysfonctionnements (il faut éviter d'envoyer des en-têtes HTTP empêchant la mise en cache). Voir la question 5 pour un moyen @@ -95,56 +95,20 @@

    - Utiliser une technique de redirection. Le principe consiste à générer le PDF dans un fichier -temporaire sur le serveur et à rediriger le client dessus (en utilisant du JavaScript, pas -l'en-tête HTTP Location qui pose aussi des problèmes). Par exemple, à la fin du script, on +temporaire sur le serveur et à rediriger le client dessus. Par exemple, à la fin du script, on peut mettre :
    //Détermination d'un nom de fichier temporaire dans le répertoire courant
    -$file=basename(tempnam(getcwd(),'tmp'));
    -//Sauvegarde du PDF dans le fichier
    -$pdf->Output($file);
    -//Redirection JavaScript
    -echo "<HTML><SCRIPT>document.location='getpdf.php?f=$file';</SCRIPT></HTML>";
    -
    -Puis ceci dans getpdf.php : -
    -
    <?php
    -$f=$HTTP_GET_VARS['f'];
    -//Contrôle du fichier (à ne pas oublier !)
    -if(substr($f,0,3)!='tmp' or strpos($f,'/') or strpos($f,'\\'))
    -    die("Nom de fichier incorrect");
    -if(!file_exists($f))
    -    die("Le fichier n'existe pas");
    -//Traitement de la requête spéciale IE au cas où
    -if($HTTP_SERVER_VARS['HTTP_USER_AGENT']=='contype')
    -{
    -    Header('Content-Type: application/pdf');
    -    exit;
    -}
    -//Envoi du PDF
    -Header('Content-Type: application/pdf');
    -Header('Content-Length: '.filesize($f));
    -readfile($f);
    -//Suppression du fichier
    -unlink($f);
    -exit;
    -?>
    -
    -Cette méthode fonctionne dans la plupart des cas, mais pose encore des problèmes avec IE6. La -méthode "ultime" consiste à rediriger directement sur le fichier temporaire. Ce dernier doit -donc avoir l'extension .pdf : -
    -
    //Détermination d'un nom de fichier temporaire dans le répertoire courant
    -$file=basename(tempnam(getcwd(),'tmp'));
    +$file=basename(tempnam('.','tmp'));
     rename($file,$file.'.pdf');
     $file.='.pdf';
     //Sauvegarde du PDF dans le fichier
     $pdf->Output($file);
     //Redirection JavaScript
    -echo "<HTML><SCRIPT>document.location='$file';</SCRIPT></HTML>";
    +echo "<html><head><script>document.location='$file';</script></head></html>";
    Cette méthode transforme un PDF dynamique en PDF statique et évite ainsi tous les ennuis. -Par contre, il faut prévoir une procédure de nettoyage pour effacer les fichiers temporaires. +Par contre il faut prévoir une procédure de nettoyage pour effacer les fichiers temporaires. Par exemple :
    function CleanFiles($dir)
    @@ -241,7 +205,7 @@
     

    11. J'ai défini les méthodes Header et Footer dans ma classe PDF mais rien ne s'affiche.

    Il faut créer un objet de la classe PDF et non pas FPDF :
    -
    $pdf=new PDF();
    +
    $pdf = new PDF();
  • @@ -255,7 +219,7 @@ Pour les polices standard, le caractère euro a pour code 128. Vous pouvez par commodité définir une constante comme suit :
    -
    define('EURO',chr(128));
    +
    define('EURO', chr(128));