PDF aus MySQL-DB (BLOB) auslesen

Hallo Zusammen!

In meiner MySQL Datenbank sind PDFs in BLOB Feldern gespeichert. Nun möchte ich diese über ein PHP-Skript zum Download bereitstellen. Habe folgenden Lösungsansatz probiert:

Link in einer Datei die alle PDFs in einer Tabelle anzeigt:
Code:
<a href="download.php?id='.$id.">download</a>

download.php:
PHP:
<?php
	global $id;

	//Zugangsdaten Datenbank
	...

	//Verbindung zur Datenbank aufbauen und prüfen ob erfolgreich
	$db = new mysqli($db_host, $db_user, $db_pass, $db_db);
	if(mysqli_connect_errno() == 0)
	{
		$sql = 'SELECT dokument FROM sicherung WHERE id = ?';
		$stmt = $db->prepare($sql);
		$stmt->bind_param("i",$id);
		$stmt->execute();
		if($stmt->bind_result($dokument))
		{
			$stmt->fetch();
			header ("Content-type: application/pdf");
			echo $dokument;
		}
	}
	else
	{
		die("Fehler: Es konnte keine Verbindung zur Datenbank aufgebaut werden!");
	}
?>

Nun kommt allerdings bei Ausführung folgende Fehlermeldung: Datei beginnt nicht mit "%PDF-"

Ein Blick in das entsprechende Feld der Datenbank mit MySQL Query Browser zeigt aber, dass die Datei sehr wohl mit diesem Text anfängt:
Code:
%PDF-1.4%âãÃÓ3 0 obj<</Length 976/FilterFlateDecode>>streamGs¼ï÷»'°â€......

Weiß jemand was ich falsch mache?
 
Hi,
Wäre schön wenn man nur den Header Typen senden müsste ^^
Guck dir mal folgende PHP-Funktionen an:
http://de.php.net/manual/de/function.pdf-new.php

MIt diesen Funktionen kann man eine Funktionierende PDF-Datei erstellen.

PHP:
<?php
    global $id;

    //Zugangsdaten Datenbank
    ...

    //Verbindung zur Datenbank aufbauen und prüfen ob erfolgreich
    $db = new mysqli($db_host, $db_user, $db_pass, $db_db);
    if(mysqli_connect_errno() == 0)
    {
        $sql = 'SELECT dokument FROM sicherung WHERE id = ?';
        $stmt = $db->prepare($sql);
        $stmt->bind_param("i",$id);
        $stmt->execute();
        if($stmt->bind_result($dokument))
        {
            $stmt->fetch();
            header ("Content-type: application/pdf");
            // Neue PDF erstellen
            $pdf = pdf_new(); 
            // Auf die Groesse von din a4 bringen
            pdf_begin_page($pdf, 595, 842); 
            // Font wählen
            $arial = pdf_findfont($pdf, "Arial", "host", 1);
            pdf_setfont($pdf, $arial, 10);
            // Text drauschreiben
            pdf_show_xy($pdf, $dokument,50, 750);
            // Ende dieser Seite
            pdf_end_page($pdf);
            // close and save file
            pdf_close($pdf);
        }
    }
    else
    {
        die("Fehler: Es konnte keine Verbindung zur Datenbank aufgebaut werden!");
    }
?>

UNGETESTET
 
Danke für die schnelle Antwort, es lag leider an etwas ganz anderem. Die Variable mit der ID wurde nicht richtig übergeben und so stand überhaupt nicht in dem resultset. Blöder Fehler.

Die Anzeige des PDFs klappt einwandfrei wenn ich nur den Header übergebe.
 

Neue Beiträge

Zurück