PHP to PDF
15/08/2018Hoje vamos aprender como exportar dados do banco MySql para o PDF. Para isso, utilizaremos a class MPDF.
Exportando dados do PHP para o PDF
Primeiramente precisamos instalar o composer na raiz do nosso projeto. Caso ainda não saiba utilizar o Composer assista nossa vídeo-aula sobre o tema clicando aqui.
O composer.json do Composer ficará da seguinte forma:
{
"name": "webdesign/pdf",
"description": "Exportacao de dados em PDF.",
"authors": [
{
"name": "Webdesign em Foco",
"email": "webdesignemfoco@gmail.com"
}
],
"require": {
"mpdf/mpdf": "^7.1"
},
"autoload":{
"psr-4":{
"Classes\\":"class/"
}
}
}
Não esqueça de dar o comando $ composer update
Posteriormente vamos criar nosso banco de dados. O banco de dados da vídeo-aula foi o "sistema" e a tabela foi a "pessoas".
CREATE TABLE `pessoas` (
`id` int(11) NOT NULL,
`nome` varchar(90) NOT NULL,
`rg` varchar(30) NOT NULL
);
ALTER TABLE `pessoas` ADD PRIMARY KEY (`id`);
ALTER TABLE `pessoas` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
INSERT INTO `pessoas` (`id`, `nome`, `rg`) VALUES
(2, 'Thais', '5'),
(1, 'Thiago', '10'),
(3, 'Flavio', '100');
Na sequência criaremos o diretório class e criaremos a ClassConexao.php e ClassPDF.php
ClassConexao.php
<?php
namespace Classes;
abstract class ClassConexao{
protected function conectaDB()
{
try{
$con=new \PDO("mysql:host=localhost;dbname=sistema","root","");
return $con;
}catch (\PDOException $erro){
return $erro->getMessage();
}
}
}
ClassPDF.php
<?php
namespace Classes;
use Classes\ClassConexao;
use \Mpdf\Mpdf;
class ClassPDF extends ClassConexao{
private $db;
private $pdf;
public function __construct()
{
$this->pdf=new Mpdf(['orientation' => 'L']);
}
#Exporta os dados do usuário no formato PDF
public function exportaDadosPdf($nome)
{
$nomeLike='%'.$nome.'%';
$this->db=$this->conectaDB()->prepare("select * from pessoas where nome like :nome");
$this->db->bindParam(":nome",$nomeLike,\PDO::PARAM_STR);
$this->db->execute();
$stylesheet = file_get_contents('style.css');
$this->pdf->WriteHTML($stylesheet,1);
$this->pdf->SetHTMLHeader("Webdesign em Foco - PDF");
$this->pdf->WriteHTML("<table>");
while($fetch=$this->db->fetch(\PDO::FETCH_ASSOC)){
$this->pdf->WriteHTML("<tr>
<td><h1>$fetch[nome]</h1></td>
<td>$fetch[id]</td>
<td>$fetch[rg]</td>
</tr>
");
}
$this->pdf->WriteHTML("</table>");
$this->pdf->SetProtection(array(), 'root', '123');
$this->pdf->Output();
}
}
A nossa estilização foi bem simples (style.css), apenas para teste:
h1{color:pink;}
table{border: 1px solid red;}
table td{border: 1px solid green;}
A index.php ficará responsável por chamar o método exportaDadosPdf().
<?php
require_once __DIR__ . '/vendor/autoload.php';
use \Classes\ClassPDF;
$pdf=new ClassPDF();
$pdf->exportaDadosPdf('Th');
Até a próxima. Sucesso nos códigos e na vida! ;)