sql >> Database teknologi >  >> RDS >> Mysql

Sådan opretter du flere sider med dompdf

Din løkke fungerer fint. Den måde, du tilføjer sider til din PDF på, er sandsynligvis forkert. Tilsyneladende overskriver du én side igen og igen i stedet for at vedhæfte en ny.

REDIGER

Jeg har aldrig brugt dompdf. Et hurtigt kig i dokumenterne lader mig tro, at du laver noget som en HTML-markering, som derefter konverteres til PDF, fik jeg det rigtigt?

Eksempelkode

$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");

Hvis du undrer dig over den usædvanlige syntaks $var = <<<HTML \r\nHTML , det er en heredoc . Det er bare mere behageligt at bruge heredocs, når du har en masse alien inline kode, dette kan have variabler {$varname} og du behøver ikke bekymre dig om tilbud. Alt du behøver for at sikre dig, er, at heredoc nærmere HTML er i en ny linje og ikke indrykket.

EDIT2

Stadig ikke så sikker på hvilket bibliotek du bruger. Jeg finder denne udvidelse ser ret godt ud, og det hedder dompdf, ligesom du sagde i dit spørgsmål.

Din seneste kommentar indikerer, at du ikke har løst dit problem indtil videre, så jeg besluttede at tilføje nogle flere oplysninger for at få dig til målet.

dompdf er i stand til at læse CSS2- og CSS3-egenskaber for dit inputdokument.

Hver cyklus i while loop ovenfor repræsenterer én lærer, som hver af dem får sin egen side i outputdokumentet.

Jeg har lagt siden ind i en div-beholder med klassen teacherPage . Du kan fylde denne beholder med alle de oplysninger, du ønsker at få vist for en lærer.

Nu skal vi bare fortælle dompdf hver teacherPage er en ny side. Dette kan gøres ved hjælp af @page markup sendt med CSS3

Jeg tilføjede en tom css-beholder <style type="text/css"></style> til eksempeldokumentet ovenfor, det er der, sidestilen skal gå til.

Eksemplet på CSS

@page teacher {
  size: A4 portrait;
  margin: 2cm;
}

.teacherPage {
   page: teacher;
   page-break-after: always;
}

Med @page du kan definere en navngivet side teacher , som kan have egenskaber, der er gyldige for hele sidecontaineren.

page-break-after: always starter en ny side efter hver container

Håber dette hjælper, god fornøjelse med at prøve :)



  1. Hvorfor er IS NOT NULL falsk, når du tjekker en rækketype?

  2. Eksporter SQL-forespørgselsdata til Excel

  3. Dimensioner af dimensioner:Et kig på Data Warehousings mest almindelige dimensionelle tabeltyper

  4. Ydelse af sys.partitioner