Vaše smyčka funguje dobře. Způsob, jakým přidáváte stránky do PDF, je pravděpodobně špatný. Zjevně přepisujete jednu stránku znovu a znovu místo toho, abyste připojovali novou.
UPRAVIT
Dompdf jsem nikdy nepoužil. Rychlý pohled do dokumentů mě napadlo, že jste vytvořili něco jako značku HTML, která se poté převedla do PDF, pochopil jsem to správně?
Ukázkový kód
$html = <<<HTML
<html>
<head>
<style type="text/css">
/* Your document styling goes here */
</style>
</head>
<body>
HTML;
while ( $row = $dbResult->fetch_assoc() ) {
$html .= '<div class="teacherPage">'
. $row['name'] // your teacher document goes here
'</div>';
}
$html .= '</body></html>';
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");
Pokud vás zajímá neobvyklá syntaxe $var = <<<HTML \r\nHTML
, to je zde . Je prostě pohodlnější používat heredocs, když máte hodně mimozemského vloženého kódu, může to mít proměnné {$varname}
a nemusíte se starat o nabídky. Vše, co potřebujete, je ujistit se, že heredoc je bližší HTML
je na novém řádku a není odsazen.
UPRAVIT2
Stále si nejste jisti, kterou knihovnu používáte. Našel jsem toto rozšíření vypadá docela dobře a jmenuje se to dompdf, jak jste řekl ve své otázce.
Váš poslední komentář naznačuje, že jste svůj problém dosud nevyřešili, proto jsem se rozhodl přidat další informace, abych vás dostal k cíli.
dompdf je schopen číst vlastnosti CSS2 a CSS3 vašeho vstupního dokumentu.
Každý cyklus v while
smyčka výše představuje jednoho učitele, přičemž každý z nich získá vlastní stránku ve výstupním dokumentu.
Stránku jsem vložil do kontejneru div s třídou teacherPage
. Tento kontejner můžete naplnit všemi informacemi, které chcete mít zobrazené pro učitele.
Nyní vše, co musíme udělat, je říci dompdf každé teacherPage
je nová stránka. To lze provést pomocí @page
označení dodáno s CSS3
Přidal jsem prázdný kontejner css <style type="text/css"></style>
na vzorový dokument výše, tam by měl styl stránky směřovat.
Příklad CSS
@page teacher {
size: A4 portrait;
margin: 2cm;
}
.teacherPage {
page: teacher;
page-break-after: always;
}
S @page
můžete definovat pojmenovanou stránku teacher
, který může mít vlastnosti platné pro celý kontejner stránky.
page-break-after: always
za každým kontejnerem začne nová stránka
Doufám, že to pomůže, užijte si to :)