pdf mit php aus mysql-datenbank erzeugen
Dirk Eckert
- php
Hallo,
ich versuche, mit php ein pdf zu erzeugen. Der Inhalt kommt aus einer MySQL-Datenbank. Das klappt mit Hilfe der entsprechenden Skripte zur pdf-Erzeugung ganz gut.
Ich bekomme das Script aber nicht so hin, dass automatisch eine oder eben mehrere pdf-Seiten erstellt werden, je nachdem, wie lang der Inhalt aus der Datenbank ist.
Kann mir da jemand helfen, oder weiss jemand ein Beispielscript im Internet?
Besten Dank
Dirk Eckert
Hallo,
ich versuche, mit php ein pdf zu erzeugen. Der Inhalt kommt aus einer MySQL-Datenbank. Das klappt mit Hilfe der entsprechenden Skripte zur pdf-Erzeugung ganz gut.
Welcher Scripte? Verwendest Du PDFLib (http://www.php.net/manual/en/ref.pdf.php) oder CLibPDF? (http://www.php.net/manual/en/ref.cpdf.php)
Ich bekomme das Script aber nicht so hin, dass automatisch eine oder eben mehrere pdf-Seiten erstellt werden, je nachdem, wie lang der Inhalt aus der Datenbank ist.
Du musst Dir die aktuelle Position auf der Seite merken, und wenn dieser Zeiger unter einen bestimmten Wert rutscht, musst Du eine neue Seite starten. (um das jetzt mal ganz abstrakt zu betrachten)
Grüße,
Christian
Hallo,
ich versuche, mit php ein pdf zu erzeugen. Der Inhalt kommt aus einer MySQL-Datenbank. Das klappt mit Hilfe der entsprechenden Skripte zur pdf-Erzeugung ganz gut.
Welcher Scripte? Verwendest Du PDFLib (http://www.php.net/manual/en/ref.pdf.php)
die PDFLib
oder CLibPDF? (http://www.php.net/manual/en/ref.cpdf.php)
Ich bekomme das Script aber nicht so hin, dass automatisch eine oder eben mehrere pdf-Seiten erstellt werden, je nachdem, wie lang der Inhalt aus der Datenbank ist.
Du musst Dir die aktuelle Position auf der Seite merken, und wenn dieser Zeiger unter einen bestimmten Wert rutscht, musst Du eine neue Seite starten. (um das jetzt mal ganz abstrakt zu betrachten)
Gut, das klappt soweit, außer dass das Script noch nicht in der Lage ist, eine dritte Seite anzufangen, bzw. zu erkennen, wann der Text zu Ende ist (stattdessen beginnt der Text von vorne). Das sieht bisher so aus
...
//Seite 1, zweispaltig
$nr = pdf_show_boxed($pdfdoc, $z["t"], 20.0, 20.0, 190.0, 200.0, "left");
$nr = pdf_show_boxed($pdfdoc, substr($z["t"], -$nr), 220.0, 20.0, 190.0, 200.0, "left");
pdf_end_page($pdfdoc);
//Seite 2, Rest von 1 wird in $nr übergeben
if (isset ($nr)) {
pdf_begin_page($pdfdoc, 421, 595);
pdf_set_font($pdfdoc, "Times-Roman", 6, "host");
$nr = pdf_show_boxed($pdfdoc, substr($z["t"], -$nr), 20.0, 20.0, 190.0, 555.0, "left");
$nr = pdf_show_boxed($pdfdoc, substr($z["t"], -$nr), 220.0, 20.0, 190.0, 555.0, "left");
pdf_end_page($pdfdoc);
}
Grüße, Dirk
Grüße,
Christian
Hallo,
Gut, das klappt soweit, außer dass das Script noch nicht in der Lage ist, eine dritte Seite anzufangen, bzw. zu erkennen, wann der Text zu Ende ist (stattdessen beginnt der Text von vorne). Das sieht bisher so aus
...
Deinen Code verstehe ich jetzt nicht so ganz...
"Abstrakter" Beispielcode:
// seite hier anfangen
pdf_begin_page($pdfdoc, 421, 595);
// evtl. noch etwas ausgeben
// zähler starten
$counter = 0;
for ($i = 0; $i < $anz_datensaetze; $i++) {
// datensaetze ausgeben und counter hochzählen
if ($counter > $max_anz_datensaetze_pro_seite) {
// evtl. noch was ausgeben
// seite schließen
pdf_end_page ($pdfdoc);
// seite hier anfangen
pdf_begin_page($pdfdoc, 421, 595);
// evtl. noch etwas ausgeben
// zähler starten
$counter = 0;
}
}
// evtl. noch was ausgeben
// seite schließen
pdf_end_page ($pdfdoc);
So sollte das vom Prinzip her funktionieren.
Grüße,
Christian