Jump to content
Vitor G. Delgallo

[Resolvido] mPDF - Instalação Manual e Implementação em Projeto com Codeigniter

Recommended Posts

Bom dia,

Estou desenvolvendo um projeto que necessita da implementação do mPDF para gerar relatórios, no entanto, não consegui de nenhuma maneira, implementa-lo em meu projeto.
Gostaria de implementar a seguinte versão do mPDF por ser a mais recente:
 - https://github.com/mpdf/mpdf

Se alguém pudesse me ajudar eu agradeceria muito!! (Gostaria de implementar-lo manualmente no meu projeto, não via composer, pois nunca utilizei composer e também não sei como ativar os comandos via CMD para a instalação).

Segue a lista de como tentei implementar o mPDF:
 - Copiei os arquivos do mPDF para a pasta "application/third_party/mpdf" do Codeigniter;
 - Criei uma library dentro da pasta "application/libraries" do Codeigniter com o nome de "m_pdf_lib.php";
 - Dentro dessa biblioteca, coloquei o seguinte código:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

include_once APPPATH . '/third_party/mpdf/src/Mpdf.php';

class m_pdf_lib {
    private $paramsLibrary = '"en-GB-x","A4","","",10,10,10,10,6,3';
    private $pdfLibrary;

    public function __construct() {
    }
    
    public function getParamsLibrary(){
        return $this->paramsLibrary;
    }
    
    public function setParamsLibrary($newParamsLibrary){
        $this->paramsLibrary = $newParamsLibrary;
        return true;
    }
    
    public function getPdfLibrary(){
        return $this->pdfLibrary;
    }
    
    public function setPdfLibrary(){
        $this->pdfLibrary = new \Mpdf\Mpdf($this->paramsLibrary);
        return true;
    }
}

 

 - E então, dentro da minha controller Default de teste, eu coloquei o seguinte código:

<?php
    defined('BASEPATH') OR exit('No direct script access allowed');

    class Teste extends CI_Controller {
        public function __construct() {
            parent::__construct();

            $this->load->library('m_pdf_lib');
        }
    
        public function testePDF(){
            $this->m_pdf_lib->setPdfLibrary();
            $mpdf = $this->m_pdf_lib->getPdfLibrary();

            $html = '<br><br><br>teste<br><br><br>';
            $file = "Relatorio.pdf";
    
            $mpdf->WriteHTML($html);
            $mpdf->Output($file, 'D');
        }
    }


PS: Já tentei ver vídeos e artigos tutoriais sobre isso, mas todos, apenas ensinam à implementar as versões antigas do mesmo (que também não funcionam no meu projeto), ou ensinam a versão mais recente via composer, algo com o qual nunca tive contato e não sei como usar.

Desculpem qualquer incomodo e obrigado desde já!!!

Share this post


Link to post
Share on other sites

Boa noite. Siga este tutorial que dará certo:

 

http://www.universidadecodeigniter.com.br/gerando-pdf-no-codeigniter-com-mpdf/

 

Você deverá instalar o mPDF via composer. A nova versão não tem jeito, terá que ser via composer. Uma vez instalado, você pode copiar a pasta vendor e usar em outros projetos sem a necessidade de instalação novamente via composer.

  • Obrigado! 1

Share this post


Link to post
Share on other sites
19 horas atrás, Alaerte Gabriel disse:

Boa noite. Siga este tutorial que dará certo:

 

http://www.universidadecodeigniter.com.br/gerando-pdf-no-codeigniter-com-mpdf/

 

Você deverá instalar o mPDF via composer. A nova versão não tem jeito, terá que ser via composer. Uma vez instalado, você pode copiar a pasta vendor e usar em outros projetos sem a necessidade de instalação novamente via composer.

Valeu mano, havia olhado esse site já anteriormente, mas os links estavam quebrados... Acredito que deve ter sido devido a internet, pois agora eles estão funcionando...

Valeu mesmo mano, tinha tentado de tudo já, até desisti e comecei a usar o PHPExcel para gerar os relatórios kkkkkk
Quando eu tiver um tempinho, sigo o tutorial e te dou um feedback!!

Share this post


Link to post
Share on other sites
Em 11/11/2017 at 01:36, Alaerte Gabriel disse:

Boa noite. Siga este tutorial que dará certo:

 

http://www.universidadecodeigniter.com.br/gerando-pdf-no-codeigniter-com-mpdf/

 

Você deverá instalar o mPDF via composer. A nova versão não tem jeito, terá que ser via composer. Uma vez instalado, você pode copiar a pasta vendor e usar em outros projetos sem a necessidade de instalação novamente via composer.


FUNCIONOOOOUUUU MANOOOOOO!!!! Valeu mesmo, você não tem noção do quanto eu agradeço!
Tive alguns problemas com as variáveis de ambiente do composer no tutorial que você me mando, então eu meio que segui um cross over desse tutorial com esse para instalar o composer em CMD: http://webdevzoom.com/how-to-install-composer-on-windows/

Então eu consegui outro tutorial para organizar melhor meu projeto.
Talvez depois eu faça um vídeo explicando exatamente oque eu fiz e poste o link dele aqui, só para que ninguém tenha o mesmo problema que eu tive.

Mais uma vez, obrigado mesmo!!!

  • Haha 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By alisonalves
      Boa tarde Pessoal. Meu site passou por uma nova reestruturação e algumas páginas mudaram de nome e outras antes eram ".html" e agora são ".php". Acontece que muitas dessas páginas antigas são bastante visitadas e eu não queria perder a visitação delas. Vou dar um exemplo. Tenho uma página chamada carros_minas-gerais.html que passará a ser chamar carros_minas-gerais.php. Como faço para esta página antiga não perder visitação? Pensei em mantê-la com um redirecionamento para a página nova via "refresh". E com o passar do tempo quando estas páginas antigas perderem visitação eu as deletaria. Está certo meu raciocínio ou não? Valeu
    • By AndersonWS
      Tenho um código que aparentemente estaria certo porém ele "trava" e  não mostra os resultados.
      Creio que o problema está na parte de "buscar" o json apenas.
      Segue o código:
      <style>.carregando{color:#666;display:none;}</style> <div class="col-md-7"> <label for="empreendimento">Escolha o empreendimento</label> <select name="empreendimento" class="form-control" required="" id="empreendimento"> <option value="">-- Escolha um empreendimento --</option> <?php $sqlVs = "SELECT `id`,`nm` FROM `empreend` WHERE `dis`='1' ORDER BY `nm` ASC"; $queryVs = mysqli_query($link, $sqlVs); $total = mysqli_num_rows($queryVs); if ($total > 0){ while($r = mysqli_fetch_array($queryVs)){ $id = $r['id']; $nm = $r['nm']; echo '<option value="'.$id.'">'.$nm.'</option>'; } } else { echo '<option value="0">Não há empreendimentos disponíveis</option>'; } ?> </select> </div> <div class="col-md-5"> <label for="unidades">Unidade</label> <span class="carregando">Aguarde, carregando...</span> <select name="unidades" id="unidades" class="form-control" required=""> <option value="">-- Escolha uma unidade --</option> </select> </div> <script src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load('jquery', '1.3'); </script> <script type="text/javascript"> $(function(){ $('#empreendimento').change(function(){ if( $(this).val() ) { $('#unidades').hide(); $('.carregando').show(); $.getJSON('ajax/busca_emp.php?search=',{empreendimento: $(this).val(), ajax: 'true'}, function(j){ var options = '<option value=""></option>'; for (var i = 0; i < j.length; i++) { options += '<option value="' + j[i].id + '">' + j[i].nm + '</option>'; } $('#unidades').html(options).show(); $('.carregando').hide(); }); } else { $('#unidades').html('<option value="">– Escolha um empreendimento –</option>'); } }); }); </script> if(!empty($_GET["search"])) { $empreendimento = trim($_GET["search"]); $empreendimento = mysqli_real_escape_string($link, $empreendimento); $unidades = array(); $sqlVs = "SELECT `id`,`nm` FROM `empreendimento` WHERE `id`='$empreendimento' ORDER BY `nm` ASC"; $queryVs = mysqli_query($link, $sqlVs); $total = mysqli_num_rows($queryVs); if ($total > 0){ while($r = mysqli_fetch_array($queryVs)){ $unidades[] = array( 'id' => $r['id'], 'nm' => $r['nm'], ); } } echo( json_encode( $unidades ) ); } else { echo 'vazio'; } Ele trava e fica apenas mostrando:
      Aguarde, carregando...
       
      Olhei o json e ele está recuperando:
      [{"id":"1","nm":"Condominio"}]
    • By Augusto Developer
      Olá, Developers.
      Bom, estou tentando somente colocar uma cor (um círculo - CSS) , em cada número que esta vindo do banco de dados, e até agora sem sucesso. Não estou usando FUNÇÃO, e somente coisa básica com PHP.
       
      Estou com duvida de colocar isso, com PHP, pois ja fiz com implode, explode e ate mesmo outros. Eu só preciso mesmo deixar cada número com cor separadamente, se vocês puderem me ajudar eu agradeço, pois o que voces verá aqui é a Cartela final para impressão de um Bingo.
       
      Esse aqui é onde eu tenho minha Conexão(Leitura do Banco), e  dou um echo, percorrendo o foreach, codigo abaixo para visualização.
      Obs: Código que esta aqui, ja é a versão que gera o DomPDF. - Ja esta funcionando.
       
      Segue a imagem, como esta a estrutura ate o momento.
      Código abaixo, para melhor analise.
       

       
       
      <?php     include '../conexao/load.php';     require_once  '../plugins/phpqrcode/qrlib.php';       ob_start();     session_start(); ?>       <style>         table{             width: 100%;             border: 1px solid #555;             margin: 0;             padding: 0;         }         th {             text-transform: uppercase;         }           table, th, td{             border:  1px solid #555;             border-collapse: collapse;             text-align: left;             padding: 10px;         }           tr:nth-child(2n+0) {             background: #eee;         }           .banner{               display: flex;             justify-content: center;            }           .imagem{         margin: 0 300px;         text-align: center;         }           .text-gerado{             text-align: center;             background-color: #2dce89;             margin: 0 180px;             font-size: 16px;             padding: 10px;             margin-top: -20px;               }           .numbers_generators{             display: flex;             justify-content: center;              align-items: center;            }           .circulo{             width: 100px;             height: 100px;             border-radius: 50%;              background-color: red;             margin: 50px;         }     </style>       <?php         $read = Conexao_Find("SELECT * FROM cartela WHERE status_cartela = 'Aguardando pagamento' ORDER BY id_cartela");         if($read){             $mostrarResultado = [];             foreach ($read as $key => $print):                 $mostrarResultado[$key] = str_split($print['numbers_generators'], 2);                      //echo "<pre>", var_dump($print) ,"</pre>"                   ?>       <table class="table">         <tr>             <th><span class="badge badge-secondary">APOSTADOR INDIVIDUAL</span></th>         </tr>           <tr>             <td>                 <img alt="Image placeholder" src="../assets/img/theme/concurso.jpeg" class="img-fluid rounded" style="width: 710px; height: 300px;">              </td>              </tr>           <tr>             <td>                 <?php                      $user_id = $_SESSION['userlogin']['user_id'];                     $dadosuser = Conexao_ReadAll('user',"WHERE user_id = " . (int)$user_id );                     $dadosuser = $dadosuser['0'];                     //$userlogin = $user['0'];                                      $path = '../images/';                     $file = $path.uniqid()."png";                       $text = "Empresa: PARÁ BINGO DA SORTE";                     $text .= "Nome Jogador: '" . $dadosuser['user_name'] ."'";                     $text .= "Email: '" . $dadosuser['user_email'] ."' ";                     $text  .= "Fone: '" . $dadosuser['user_phone'] ."' ";                       QRcode::png($text, $file, 'L', 2, 2);                     echo "<p class=\"banner\"><img class=\"imagem\" src='". $file ."'></p>";                 ?>                   <p class="text-gerado">JOGO GERADO - <b>CARTELA #<?= $print['cod_reference']; ?></p>             </td>         </tr>           <tr>             <td>                 <span class="numbers_generators"><b><?= implode(" - ", $mostrarResultado[$key]); ?></b></span>             </td>         </tr>     </table>       <?php endforeach; } ?>  
       
       
       
       
       
    • By ViniciusRamoa
      Eu peguei um site já pronto em laravel, minha ideia era só pegar o site que o cara distribuiu e mudar layout aos poucos para se adaptar para mim, eu sei, digamos, o intermediário de css e básico de Php e html, e o que eu quero alterar é só o básico como: cores, background e etc, mas mesmo eu alterando os arquivos css ou até mesmo apagando todos os arquivos css, NADA muda no site, como se fosse inútil os arquivos css, mudar a aparência no laravel é diferente? Qual o método?
      Vale lembrar que possui vários arquivos .blade (index.blade, footer.blade etc), isso tem algo a ver? Obrigado
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.