Marcus: Ausgabe eines PDF mit Hilfe von PHP in HTML

Hallo in die Runde,

eine Frage, die mich doch beschäftigt. Ich möchte in einem HTML-Dokument, daß über ein Formular einen Wert (Datum) erhält, mittels PHP ein PDF aufrufen und ausgeben. Dazu habe ich mir folgendes Beispiel gebaut :

<html>
<head>
<?php
 $datum=$_POST["datum"];
 $eingabe=$_POST["eingabe"];
 if(isset($eingabe))
 {
  if(ereg ("([0-9]{2}).([0-9]{2}).([0-9]{4})",$datum, $regs))
  {
   $dateiname="kbl_$regs[3]$regs[2]$regs[1].pdf";
   $fp=fopen($dateiname, "r");
   if($fp)
    {
    header("Content-type: application/pdf");
    fpassthru($fp);
    fclose($fp);
    }
   else
    echo "Datei ".$dateiname." nicht vorhanden!";
  }
  else
   {
   echo "Ungültiges Datumsformat: $datum";
   }
 }
?>
</head>
<body>
 <form action="self_kbl.php" method="post">
 <input type="Text" size=10 name="datum">
 <input type="submit" name="eingabe">
 </form>
</body>
</html>

Das Script soll das Datum des Formulars übernehmen und beim zweiten Aufruf eine passende Datei (PDF) ausgeben. Bis zum Öffnen komme ich, dann erhalte ich jedoch den Hinweis

Warning: Cannot modify header information - headers already sent by

Er versteht den Header nicht. Lasse ich das PHP Script ohne HTML arbeiten, also allein, funktionierts. Frage : Wie kann ich in einem HTML-Dokument eingebettet mit PHP eine PDF-Datei aufrufen ?

Tipps sehr willkommen :)

Gruß  Marcus

  1. Hallo in die Runde,

    Hi!

    Warning: Cannot modify header information - headers already sent by
    Er versteht den Header nicht.

    das Problem ist, dass Du vor dem modifizieren des Headers schon etwas ausgibst. Der Header muss immer _vor_ jeder ausgabe geschrieben werden, sonst ist es ja schon zu spät und der Header ist schon "weg"

    Nachzulesen unter: http://de3.php.net/header

    Gruß  Marcus

    LG Maresa P.

    1. das Problem ist, dass Du vor dem modifizieren des Headers schon etwas ausgibst. Der Header muss immer _vor_ jeder ausgabe geschrieben werden, sonst ist es ja schon zu spät und der Header ist schon "weg"

      Hallo Maresa,

      danke für die schnelle Antwort. Manchmal ist man ja wirklich begriffsstutzig - geht mir grad so. Vor jeder Ausgabe bedeutet hier dann noch vor dem Öffnen der PDF-Datei im PHP-Teil oder sogar noch vor dem Start des PHP-Teils für das HTML-Form-Tag? Im PHP-Teil wäre der Header ja der erste Punkt vor der Ausgabe. Vielleicht kannst Du mir nochmal sagen, wie es dann aussehen sollte ?

      Mit verwirrtem Gruß
      Marcus

      1. Hallo Marcus!

        wenn du Header versenden willst, _muss_ dies erfolgen, bevor _irgendwas_ (also auch ein Whitespace) rausgeschickt wird.

        Also:
        <?php
        Header(...)

        direkt an den Anfang der Datei!

        Gruß

        Martin

        1. Hallo Marcus!

          wenn du Header versenden willst, _muss_ dies erfolgen, bevor _irgendwas_ (also auch ein Whitespace) rausgeschickt wird.

          Also:
          <?php
          Header(...)

          direkt an den Anfang der Datei!

          Gruß

          Martin

          Jau,

          das wars .... der <HTML>-Teil beginnt jetzt erst nach dem <?php ?>-Teil und voila - es läuft. Hier die geänderte Version :

          <?php
          header("Content-type: application/pdf");
           $datum=$_POST["datum"];
           $eingabe=$_POST["eingabe"];
           if(isset($eingabe))
           {
            if(ereg ("([0-9]{2}).([0-9]{2}).([0-9]{4})",$datum, $regs))
            {
             $dateiname="kbl_$regs[3]$regs[2]$regs[1].pdf";
             $fp=fopen($dateiname, "r");
             if($fp)
              {
              fpassthru($fp);
              fclose($fp);
              }
             else
              echo "Datei $dateiname nicht vorhanden!";
            }
            else
             {
             echo "Ungültiges Datumsformat: $datum";
             }
           }
          ?>
          <html>
          <head>
          </head>
          <body>
           <form action="self_kbl.php" method="post">
           <input type="Text" size=10 name="datum">
           <input type="submit" name="eingabe">
           </form>
          </body>
          </html>

          Vielen Dank Euch beiden ...

          Gruß  Marcus