TCPDF Hintergrundbild aus der Datenbank wählen

CreativPur

Erfahrenes Mitglied
Hi,
erst einmal ein frohes neues Jahr....

Ich habe folgendes Problem

Ich möchte eine PDF mit php erstellen

In dieser PDF wird ein Hintergrundbild aufgerufen..

PHP:
class MYPDF extends TCPDF {
    //Page header
    public function Header() {
        // get the current page break margin
        $bMargin = $this->getBreakMargin();
        // get current auto-page-break mode
        $auto_page_break = $this->AutoPageBreak;
        // disable auto-page-break
        $this->SetAutoPageBreak(false, 0);
        // set bacground image
        $img_file = K_PATH_IMAGES.'../Vorlagen/mein_Bild.jpg';
        $this->Image($img_file, 0, 0, 594, 841, '', '', '', false, 300, '', false, false, 0);
        // restore auto-page-break status
        $this->SetAutoPageBreak($auto_page_break, $bMargin);
        // set the starting point for the page content
        $this->setPageMark();
    }
}

Das funktioniert auch super..

Aber..

Wie binde ich ein Bild aus diesem Ordner über meine SQL-Datenbank ?

Mein Versuch

PHP:
$preisschild_code = '139757';
   
$sql = "SELECT * FROM preisschild WHERE preisschild_code = $preisschild_code";
$schild = $pdo->query($sql)->fetch();

// Extend the TCPDF class to create custom Header and Footer
class MYPDF extends TCPDF {
    //Page header
    public function Header() {
        // get the current page break margin
        $bMargin = $this->getBreakMargin();
        // get current auto-page-break mode
        $auto_page_break = $this->AutoPageBreak;
        // disable auto-page-break
        $this->SetAutoPageBreak(false, 0);
        // set bacground image
        $img_file = K_PATH_IMAGES.'../Vorlagen/'.$schild['vorlage'].'.jpg';
        $this->Image($img_file, 0, 0, 594, 841, '', '', '', false, 300, '', false, false, 0);
        // restore auto-page-break status
        $this->SetAutoPageBreak($auto_page_break, $bMargin);
        // set the starting point for the page content
        $this->setPageMark();
    }
}

Dies funktioniert leider nicht. Es wird nur ein weißes Blatt ausgegeben.
 
Ich empfehle, ein paar Diagnoseausgaben einzubauen:
Wie sieht das Ergebnis des Lesens aus der DB aus?
Wie sieht der fertige Pfad aus?
Existiert die Bilddatei unter dem fertigen Pfad?
Code:
        var_dump($schild);
        $img_file = K_PATH_IMAGES.'../Vorlagen/'.$schild['vorlage'].'.jpg';
        var_dump($img_file);
        var_dump(file_exists($img_file));
 
Hi,
vielen Dank für Deine schnelle Antwort..
Nachdem ich deinen Code eingegeben habe, bekam ich folgende Fehlermeldung,,

NULL string(73) "/is/htdocs/wp12703457_XEMH6JLFPR/www/preisschilder/tcpdf/../Vorlagen/.jpg" bool(false) TCPDF ERROR: Some data has already been output to browser, can't send PDF file

Das lesen aus der Datenbank funktioniert . Getesteten habe ich es mit

<span style="color:black;text-align:center;font-weight:bold;font-size:80pt;">'.$schild['preis_neu'].'</span>

der Preis wird angezeigt..

Die Test-PHP liegt im Hauptverzeichnis, die tcpdf.php im Ordner tcpdf, die Vorlage im Ordner Vorlagen..
alles Insgesamt im Hauptverzeichnis .
 
Hi,
vielen Dank für Deine schnelle Antwort..
Nachdem ich deinen Code eingegeben habe, bekam ich folgende Fehlermeldung,,

NULL string(73) "/is/htdocs/wp12703457_XEMH6JLFPR/www/preisschilder/tcpdf/../Vorlagen/.jpg" bool(false) TCPDF ERROR: Some data has already been output to browser, can't send PDF file

Das lesen aus der Datenbank funktioniert . Getesteten habe ich es mit

<span style="color:black;text-align:center;font-weight:bold;font-size:80pt;">'.$schild['preis_neu'].'</span>

der Preis wird angezeigt..

Die Test-PHP liegt im Hauptverzeichnis, die tcpdf.php im Ordner tcpdf, die Vorlage im Ordner Vorlagen..
alles Insgesamt im Hauptverzeichnis .
Sieht für mich so aus, als würde ein leerer String von der Datenbank zurückkommen. Steht denn der richtige Dateiname in der Datenbank bzw stimmt der Spaltenname so?

Viele Grüße
Sascha
 
Hi Sacha,
habe soeben nochmals alles Überprüft ..
Ich habe mich nicht verschrieben

Merkwürdig ist nur, dass der "preis_neu" richtig ausgegeben wird.

Ich habe die Hochkommas mit " ersetzt, aber auch hier scheint der Fehler nicht zu liegen

PHP:
$preisschild_code = '139757';
    
$sql = "SELECT vorlage,preis_neu FROM preisschild WHERE preisschild_code = $preisschild_code";
$schild = $pdo->query($sql)->fetch();

 
// Extend the TCPDF class to create custom Header and Footer
class MYPDF extends TCPDF {
    //Page header
    public function Header() {
        // get the current page break margin
        $bMargin = $this->getBreakMargin();
        // get current auto-page-break mode
        $auto_page_break = $this->AutoPageBreak;
        // disable auto-page-break
        $this->SetAutoPageBreak(false, 0);
        // set bacground image
        $img_file = K_PATH_IMAGES.'../Vorlagen/'.$schild['vorlage'].'.jpg';
        $this->Image($img_file, 0, 0, 594, 841, '', '', '', false, 300, '', false, false, 0);
        // restore auto-page-break status
        $this->SetAutoPageBreak($auto_page_break, $bMargin);
        // set the starting point for the page content
        $this->setPageMark();
    }
}
 
Leider habe ich immer noch keine Lösung .
Daher nochmals ausführlich mein Problem.

Wenn ich als Hintergrund den Namen des Bildes eingebe, funktioniert es
siehe Zeile 20..
PHP:
$pdo = new PDO('mysql:host=localhost;dbname=db12703457-preisschilder', 'db12703457-3', 'Crowe01.10.2019');
$preisschild_code = '329776';
$sql = "SELECT * FROM preisschild WHERE preisschild_code = $preisschild_code";
$schild = $pdo->query($sql)->fetch();

// Include the main TCPDF library (search for installation path).
require_once('tcpdf/tcpdf.php');

// Extend the TCPDF class to create custom Header and Footer
class MYPDF extends TCPDF {
    //Page header
    public function Header() {
        // get the current page break margin
        $bMargin = $this->getBreakMargin();
        // get current auto-page-break mode
        $auto_page_break = $this->AutoPageBreak;
        // disable auto-page-break
        $this->SetAutoPageBreak(false, 0);
        // set bacground image
        $img_file = K_PATH_IMAGES.'mein_bild.jpg';
        $this->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);
        // restore auto-page-break status
        $this->SetAutoPageBreak($auto_page_break, $bMargin);
        // set the starting point for the page content
        $this->setPageMark();
    }
}

Wenn ich in Zeile 20 aber das Bild aus der Datenbank laden möchte, dann funktioniert es nicht, zumindest wird es nicht angezeigt ...

PHP:
$img_file = K_PATH_IMAGES.''.$schild['vorlage'].'.jpg';
 
Exportiere deine Tabelle am besten Mal als SQL und poste das, dann kann man eine Testtabelle anlegen und es untersuchen.
 

Neue Beiträge

Zurück