Integração da mPDF no CodeIgniter 4 usando composer

Publicado por Cláudio Souza Jr. em 11/06/2020

[ Hits: 1.889 ]

 


Integração da mPDF no CodeIgniter 4 usando composer



A dica a seguir é um roteiro simples para integrar a biblioteca de renderização de PDF's mPDF no CodeIgniter versão 4.

1. Instale com o composer:

Primeiro porque a própria documentação da mPDF recomenda usar o composer para instalar (veja: Using mPDF without Composer – Installation & Setup – mPDF Manual). Lá, inclusive, é expressamente declarado que não há nenhuma garantia de funcionamento se você resolver instalar de outra maneira.

Depois porque, mais dia menos dia, você que trabalha com PHP precisará conhecer composer de um jeito ou de outro. Assim, sugiro que comece agora a ler ao menos o básico. Se ainda não instalou, leia a documentação e instale no seu sistema operacional. Recomendo, fortemente, que você use o padrão de instalação global (veja: Introduction - Composer), pois aqui eu vou me referir aos comandos sem usar "php composer.phar".

Instalado o composer, é bom que se observe que o CodeIgniter tem suporte nativo pra ele, e você deve instalar a mPDF na raiz da aplicação, ou seja, no ROOTPATH, no local onde instalou o framework. No meu caso, o CodeIgniter está instalado em '/opt/codeigniter/ci4'. Esse, portanto, é o meu ROOTPATH. Então:

# cd /opt/codeigniter/ci4

Dentro do 'ROOTPATH', localize o arquivo 'composer.json' e altere a seção 'require':

"require": {
        "php": ">=7.2",
        "ext-curl": "*",
        "ext-intl": "*",
        "ext-json": "*",
        "kint-php/kint": "^3.3",
        "psr/log": "^1.1",
        "laminas/laminas-escaper": "^2.6",
        "mpdf/mpdf": "^8.0"
    },

O meu está assim, o seu pode estar diferente. Mas o princípio é o mesmo. Se o seu 'ROOTPATH' não tem um 'composer.json', crie um e adicione minimamente o seguinte:

{
   "name":"nome/seuprojeto",
   "description":"Descrição do seu projeto",
       "license": "GPL-3.0-or-later",
       "authors": [{
               "name": "Seu nome",
               "email": "[email protected]",
               "homepage": "https://seulinkaqui"
           }
    ],
    "require": {
        "php": ">=7.2",
        "mpdf/mpdf": "^8.0"
    }
}

A partir daqui, você já pode usar o comando update do composer pra baixar/atualizar as bibliotecas da sua instalação do CodeIgniter:

# composer update

Aguarde a instalação, corrija os erros que eventualmente surgirem (se surgirem) e verifique se foi criada a pasta 'vendor', que é onde são instaladas as bibliotecas. Dentro dela deve ter um arquivo chamado 'autoload.php', e nessa mesma pasta estará a pasta 'mpdf' (no meu caso, o path ficou '/opt/codeigniter/ci4/vendor/autoload.php').

O próximo passo é dar permissão de escrita ao diretório 'mpdf/mpdf/tmp', conforme descrito na documentação. Dê permissão de acesso e escrita apenas a este diretório para o usuário que executa o servidor web (no caso do meu Apache, é o 'www-data', mas você pode descobrir qual é o usuário para o seu caso: Linux: Find Out Apache User Name - nixCraft). No meu ambiente, o comando ficou assim (lembre-se de que estou dentro do meu 'ROOTPATH'):

# chown -R www-data:www-data vendor/mpdf/mpdf/tmp

A partir daqui a classe já está pronta pra uso no framework.

2. Crie o controller:

A seguir, um exemplo muito (muito) básico de como usar a classe num controller:

<?php

namespace App\Controllers;

use App\Models\NewsModel;
use CodeIgniter\Controller;
use \Mpdf\Mpdf; /*Aqui você está declarando a classe instalada com o composer*/

class Pdf extends Controller {

    function index() {
        $this->response->setHeader('Content-Type', 'application/pdf');
        $filename = 'index.pdf';
        $mpdf = new Mpdf;
        $mpdf&#8594;WriteHTML('Esse é um teste básico');
        $mpdf->Output($filename,'I');
    }

}

Daqui em diante, todas as funcionalidades que podem ser adicionadas estão na documentação da classe e você pode incrementar esse modelo básico com um monte de outros recursos.

Outras dicas deste autor

Instalando plugins comuns diretamente no Seamonkey

MySQL - Recuperando o usuário root excluído por meio do usuário debian-sys-maint

Mudando idioma do KeePass 2 (no Debian)

Configurando HSP56 MR driver Smartlink no Ubuntu 9.04

Leitura recomendada

Criando variáveis dinâmicas em PHP a partir de um formulário

Docker, Git e PHP

FirePHP: Depurador de códigos PHP

Autenticar usuário e mostrar os membros de um grupo no site PHP via LDAP no AD W2K12

Agilizando criação de formulários em PHP usando o laço FOR

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário