Crie PDF em PHP

Subodh Poudel 18 outubro 2021
  1. Use a biblioteca mpdf para criar PDF em PHP
  2. Use a biblioteca dompdf para criar PDF em PHP
Crie PDF em PHP

Este artigo apresentará métodos para criar PDF em PHP. Vamos recuperar os dados do banco de dados, colocá-los no PDF e fazer o download.

Use a biblioteca mpdf para criar PDF em PHP

Podemos usar a biblioteca externa mpdf para criar um PDF em PHP. Podemos recuperar os dados do banco de dados, armazená-los em PDF e fazer o download do PDF. Usando esta biblioteca, podemos criar PDF a partir de documentos HTML. Os documentos HTML devem ser codificados em UTF-8. Podemos recuperar os dados a serem adicionados ao PDF do banco de dados em formato HTML. Podemos baixá-lo pelo comando composer require mpdf/mpd do diretório do projeto para usar a biblioteca. O comando instalará a biblioteca mpdf no diretório do projeto. Um arquivo vendor será criado e precisamos usar a função require() para incluir o arquivo autoload.php localizado dentro da pasta vendor. Precisamos ter certeza de que o diretório onde a biblioteca está instalada deve ter permissão de gravação.

Vamos criar um objeto a partir do construtor Mpdf() e usar métodos como WriteHTML() e output() para criar o PDF. Existem diferentes modos em que podemos gerar o PDF. Podemos especificar os modos no segundo parâmetro do método output(). Os diferentes modos são representados pelas opções D, I, F e S. A opção D forçará o download do PDF após a execução do script. A opção I mostrará o PDF no navegador após a execução do script. Enquanto isso, a opção F fará o download do PDF salvo na pasta relativa ao arquivo PHP. Por último, a opção F produzirá o pdf no navegador apenas quando o método output() for atribuído a uma variável.

Por exemplo, temos um banco de dados denominado phprow contendo uma tabela denominada Pessoas. A tabela Pessoas contém os seguintes dados.

+----------+----------+-----------+
| PersonID | Name     | Address   |
+----------+----------+-----------+
| 22       | Harry M  | England   |
| 32       | Paul P   | France    | 
+----------+----------+-----------+

Primeiro, use a função require() para incluir o arquivo vender/autoload.php. Em seguida, crie e estabeleça uma conexão de banco de dados, execute a consulta SQL para selecionar os dados do banco de dados e crie uma tabela na variável $html. Use o . operador para concatenar a variável $html com os corpos da tabela. Crie uma tabela com os cabeçalhos de tabela ID, Name e Address. Em seguida, preencha a tabela recuperando os dados mostrados acima da tabela Persons.

Código de exemplo:

require('vendor/autoload.php');
$con=mysqli_connect('localhost','root','','phprow');
$res=mysqli_query($con,"select * from Persons");
if(mysqli_num_rows($res)>0){
    $html='<table>';
    $html.='<tr><td>ID</td><td>Name</td><td>Address</td>';
    while($row=mysqli_fetch_assoc($res)){
        $html.='<tr><td>'.$row['PersonID'].'</td><td>'.$row['Name'].'</td><td>'.$row['Address'].'</td></tr>';
    }
    $html.='</table>';
}

No exemplo acima, armazenamos uma tabela com os dados do banco de dados na variável $html. Usamos o . operador para concatenar todos os elementos da tabela. Assim, preparamos um documento HTML para ser escrito em PDF.

Em seguida, crie uma variável chamada $mpdf. Atribua o objeto do construtor Mpdf() à variável usando a palavra-chave new. Chame a função WriteHTML() com a variável $html como o parâmetro com o objeto. Em seguida, crie outra variável, $file, para armazenar o PDF. Junte files/ com a função time() e concatene-o novamente com .pdf para criar o nome do arquivo. Armazene-o na variável $file. Por último, chame a função output() com $file como primeiro parâmetro e a opção I como segundo parâmetro.

Assim, recuperamos os dados do banco de dados e criamos um PDF com esses dados. O exemplo abaixo cria um arquivo com o nome da hora atual com uma extensão .pdf dentro da pasta files. O PDF será mostrado no navegador após a execução do script. Podemos baixar o PDF do navegador.

Código de exemplo:

$mpdf=new \Mpdf\Mpdf();
$mpdf->WriteHTML($html);
$file='files/'.time().'.pdf';
$mpdf->output($file,'I');

Use a biblioteca dompdf para criar PDF em PHP

A biblioteca dompdf também é uma opção para criar e baixar um PDF em PHP. Ele nos permite carregar o HTML no PDF. Esta biblioteca é muito semelhante à biblioteca mpdf; apenas os métodos são diferentes. Usaremos métodos como loadHtml(), render() e stream(). Precisamos baixar a biblioteca para nosso diretório de trabalho usando o comando composer require dompdf/dompdf. Ele criará a pasta vendor como no primeiro método junto com os arquivos composer.json e composer.lock.

Por exemplo, exija vendor/autoload.php como a primeira linha do código no programa. Em seguida, escreva a palavra-chave use para importar a classe Dompdf como use Dompdf/Dompdf. Podemos usar a mesma tabela HTML do método acima para carregar no PDF.

require 'vendor/autoload.php';
use Dompdf\Dompdf;

Após armazenar o HTML em uma variável $html, crie outra variável $dompdf para criar um objeto da classe Dompdf. Em seguida, chame o método loadHtml() com $html como parâmetro. Em seguida, chame a função render() e, em seguida, a função stream() com o objeto $dompdf.

O exemplo abaixo criará um PDF com a tabela como no primeiro método. O método render() renderiza o HTML como um arquivo PDF, e o método stream() gera o HTML renderizado para o navegador. Assim, podemos criar um PDF usando a biblioteca dompdf em PHP.

Código de exemplo:

$dompdf = new Dompdf();
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->stream();
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn