HOWTO · PHP

Crie PDF em PHP

Este artigo apresenta como criar um 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();