Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak stworzyć kilka stron za pomocą dompdf

Twoja pętla działa dobrze. Sposób dodawania stron do pliku PDF jest prawdopodobnie niewłaściwy. Najwyraźniej ciągle nadpisujesz jedną stronę zamiast dołączać nową.

EDYTUJ

Nigdy nie korzystałem z dompdf. Szybkie spojrzenie na dokumenty pozwala mi pomyśleć, że tworzysz coś w rodzaju znacznika HTML, który następnie jest konwertowany na plik PDF, czy dobrze zrozumiałem?

Przykładowy kod

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

Jeśli zastanawiasz się nad niezwykłą składnią $var = <<<HTML \r\nHTML , to jest heredoc . Po prostu wygodniej jest używać dokumentów heredocs, gdy masz dużo obcego kodu wbudowanego, który może mieć zmienne {$varname} i nie musisz się martwić o cytaty. Wszystko, czego musisz się upewnić, to to, że heredoc bliżej HTML jest w nowej linii i nie ma wcięcia.

EDYTUJ2

Nadal nie jestem pewien, której biblioteki używasz. Znalazłem to rozszerzenie wygląda całkiem nieźle i nazywa się dompdf, tak jak powiedziałeś w swoim pytaniu.

Twój ostatni komentarz wskazuje, że do tej pory nie rozwiązałeś swojego problemu, więc postanowiłem dodać więcej informacji, aby dotrzeć do celu.

dompdf może odczytać właściwości CSS2 i CSS3 dokumentu wejściowego.

Każdy cykl w while pętla powyżej reprezentuje jednego nauczyciela, z którego każdy otrzymuje własną stronę w dokumencie wyjściowym.

Umieściłem stronę w kontenerze div z klasą teacherPage . Możesz wypełnić ten pojemnik wszystkimi informacjami, które chcesz wyświetlić dla nauczyciela.

Teraz wszystko, co musimy zrobić, to poinformować dompdf o każdej teacherPage to nowa strona. Można to zrobić za pomocą @page znacznik dostarczony z CSS3

Dodałem pusty kontener css <style type="text/css"></style> do przykładowego dokumentu powyżej, to właśnie tam powinna iść stylizacja strony.

Przykładowy CSS

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

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

Z @page możesz zdefiniować nazwaną stronę teacher , które mogą mieć właściwości ważne dla całego kontenera strony.

page-break-after: always rozpocznie nową stronę po każdym kontenerze

Mam nadzieję, że to pomoże, baw się dobrze :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie MySQL Select do pobrania bazy rekordów na podstawie wartości z listy

  2. Jak zainicjować bazę danych MySQL ze schematem w kontenerze Docker?

  3. MySQL Wstawić do wielu tabel? (Normalizacja bazy danych?)

  4. Zapytanie SQL do policzenia w grupie według określonego warunku

  5. Co oznaczają ikony kolumn mysql workbench