sql >> Databáze >  >> RDS >> Mysql

Jak vytvořit několik stránek pomocí dompdf

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 :)



  1. Vyžaduje ODP.NET instalaci klienta Oracle?

  2. Příklady převodu „date“ na „smalldatetime“ v SQL Server (T-SQL)

  3. Chci použít příkaz CASE k aktualizaci některých záznamů na serveru SQL 2005

  4. Simulujte funkci zpoždění v MySQL