Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como criar várias páginas com dompdf


Seu loop está funcionando bem. A maneira como você adiciona páginas ao seu PDF provavelmente está errada. Aparentemente, você está substituindo uma página repetidamente em vez de anexar uma nova.

EDITAR

Eu nunca usei dompdf. Uma rápida olhada nos documentos me permite pensar que você cria algo como uma marcação HTML que é convertida em PDF, entendi direito?

Código de exemplo
$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");

Se você se pergunta sobre a sintaxe incomum $var = <<<HTML \r\nHTML , isso é um heredoc . É mais confortável usar heredocs quando você tem muito código inline alienígena, isso pode ter variáveis ​​{$varname} e você não precisa se preocupar com cotações. Tudo que você precisa ter certeza, é que heredoc mais próximo de HTML está em uma nova linha e não recuada.

EDIT2

Ainda não tenho certeza, qual biblioteca você está usando. Encontrei esta extensão parecendo muito bom e é chamado dompdf, assim como você disse na sua pergunta.

Seu último comentário indica que você não resolveu seu problema até agora, então decidi adicionar mais algumas informações para levá-lo ao alvo.

dompdf é capaz de ler as propriedades CSS2 e CSS3 do seu documento de entrada.

Cada ciclo no while O loop acima representa um professor com cada um deles recebendo uma página própria no documento de saída.

Coloquei a página em um contêiner div com a classe teacherPage . Você pode preencher este recipiente com todas as informações que deseja exibir para um professor.

Agora tudo o que precisamos fazer é informar ao dompdf cada teacherPage é uma nova página. Isso pode ser feito usando @page marcação enviado com CSS3

Adicionei um contêiner css vazio <style type="text/css"></style> para o documento de exemplo acima, é para onde deve ir o estilo da página.

O exemplo de CSS
@page teacher {
  size: A4 portrait;
  margin: 2cm;
}

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

Com @page você pode definir uma página nomeada teacher , que pode ter propriedades válidas para todo o contêiner de página.

page-break-after: always iniciará uma nova página após cada contêiner

Espero ter ajudado, divirta-se tentando :)