Ausgabe eines PDF mit Hilfe von PHP in HTML
Marcus
- php
0 Maresa P.0 Marcus0 Martin Hölter0 Marcus
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
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.
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
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
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