Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcosmigueloliveira

Classe mPDF com arquivos grandes!

Recommended Posts

Ola Pessoal estou com um problemas na geração de relatórios PDF.

 

Consigo gerar um arquivo PDF até 800 linhas apartir ai trava!

 

Alguem tem alguma dica ou outra classe que pode me ajudar.

 

Ja testei dompdf e html2pdf.

 

Obrigado!

<?php
  session_start();
  //include_once '../valida.php';
  include_once '../funcao_conexao.php';
  include_once '../variaveisDaSecao.php';
  include 'mpdf/mpdf.php';


    //RECEBENDO PEDIDO
    $pedidoImprimir      = $_GET["print"];

    switch ($pedidoImprimir) {
      case '1':
        $titulo = "Ferramentas de Uso Comum - FUC";
        break;
       case '2':
        $titulo = "Equipamentos de Apoio ao Solo - EAS";
        break;     
       case '3':
        $titulo = "Material de Consumo";
        break;           
      default:
        # code...
        break;
    }

?>

   <?php
    
    //SELECIONAR OS MATERIAIS DE ACORDO COM O TIPO
    $qrMaterial      = mysql_query("SELECT * FROM tb_material  AS m \r
                     INNER JOIN tb_localizacao l    ON  m.MtCodLoc = l.LcCodigo \r
                     INNER JOIN tb_projeto p        ON  m.MtCodProjeto  = p.PrCodigo \r
                     INNER JOIN tb_tipoMaterial t   ON  m.MtCodMaterial  = t.TmCodigo \r
                     INNER JOIN tb_espec_mnt e      ON  m.MtCodEspMnt  = e.EmCodigo \r                   
                     WHERE m.MtCodMaterial = '$pedidoImprimir' LIMIT 0,800");
    
    //CONTANDO A QUANTIDADE DE ITENS DO RESPECTIVO MATERIAL
    $qtdItensMaterial = mysql_num_rows($qrMaterial);

    //NESSE LOOPING EU PEGO OS REGISTRO DO ARRAY QUE CONTEM
    //O RESULTADO COM OS MATERIAIS                      
    while($rowMaterialItens = mysql_fetch_array($qrMaterial)){
      $materialCodigo         = $rowMaterialItens['MtCodigo'];      
      $materialTipo           = $rowMaterialItens['MtCodMaterial'];
      $materialNome           = $rowMaterialItens['MtNome'];
      $materialPnSn           = $rowMaterialItens['MtPn']."/".$rowMaterialItens['MtSn'];
      $materialPatrimonio     = $rowMaterialItens['MtNome'];
      $materialObs            = $rowMaterialItens['MtObs'];  
      $materialEstoque        = $rowMaterialItens['MtQuantidade'];  
      $materialProjeto        = $rowMaterialItens['PrNome'];
      $materialLocal          = $rowMaterialItens['LcNome'];  
      $materialEspecMnt       = $rowMaterialItens['EmNome'];  

      //NESSA QUERY EU PEGO OS ITENS QUE ESTÃO EMPRESTADOS
      //PARA PODER GERAR O ESTOQUE REAL
      $qrTotalMat     = mysql_query("SELECT SmCodigo, SmCodMat, SUM(SmQuantidade) as qtdSaida FROM tb_saidaMaterial  AS s \r
                        WHERE s.SmCodMat = '$materialCodigo'");
      //AQUI FAÇO A SOMA DO QUE TENHO EM ESTOQUE COM O QUE ESTA EMPRESTADO
      $materialSaida = mysql_fetch_assoc($qrTotalMat);
      $totalSaidaMaterial = $materialSaida['qtdSaida'];

      if (empty($totalSaidaMaterial)) {
        $totalSaidaMaterial = 0;
      }
      //SOMANDO O ESTOQUE TOTAL
      $materialTotal = $materialEstoque+$totalSaidaMaterial;
      //NESSA PARTE GERO CADA LINHA DO RELATORIO
      $item = '
        <tr>
          <td>'.$materialNome.'</td>                
          <td>'.$materialPnSn.'</td>     
          <td ><center>'.$materialPatrimonio.'</center></td>  
          <td ><center>'.$materialObs.'<c/enter></td>  
          <td>'.$materialProjeto.'</td>                
          <td>'.$materialLocal.'</td>     
          <td ><center>'.$materialEspecMnt.'</center></td>  
          <td ><center>'.$materialEstoque.'</center></td>
          <td ><center>'.$totalSaidaMaterial.'</center></td>
          <td ><center>'.$materialTotal.'</center></td>                                            
         </tr>';

      $itens .= $item;
        

    }

  ?>
  <!--AQUI ESTA O DOCUMENTO HTML QUE SERA GERADO O PDF-->
  <?php
    $pedido =  '
<html>
  
  <head>
    <title>Relação de Materiais</title>
  <html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br" xml:lang="pt-br">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    
    <meta name="viewport" content="width=device-width">
    <link rel="stylesheet" href="../bootstrap-3.3.4-dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="../bootstrap-3.3.4-dist/css/bootstrap-submenu.min.css">    
    <link rel="stylesheet" href="../bootstrap-3.3.4-dist/css/submenu.css">  

    <script src="../bootstrap-3.3.4-dist/js/jquery.min.js" type="text/javascript"></script>
    <script src="../bootstrap-3.3.4-dist/js/bootstrap.min.js" type="text/javascript"></script>
    <script src="../bootstrap-3.3.4-dist/js/funcoes.js" type="text/javascript"></script>
    <script src="../bootstrap-3.3.4-dist/js/bootstrap-submenu.min.js"></script>

   <!--links auto-completar-css -->
  <script type="text/javascript" src="../jquery-autocomplete/lib/jquery.js"></script>
  <script type="text/javascript" src="../jquery-autocomplete/lib/jquery.bgiframe.min.js"></script>
  <script type="text/javascript" src="../jquery-autocomplete/lib/jquery.ajaxQueue.js"></script>
  <script type="text/javascript" src="../jquery-autocomplete/lib/thickbox-compressed.js"></script>
  <script type="text/javascript" src="../jquery-autocomplete/jquery.autocomplete.js"></script>
  <!--links auto-completar-js-->

  <link rel="stylesheet" type="text/css" href="../jquery-autocomplete/jquery.autocomplete.css">
  <link rel="stylesheet" type="text/css" href="../jquery-autocomplete/lib/thickbox.css">

  <!--CABEÇALHO DO RELATORIO-->
    <div class="container">
      <div class="table-responsive">
        <table class="table"> 
          <tr>
            <td>Sistema de Geranciamento de Ferramentas-SISCONFE 0.1</td>
            <td>6º ETA</td>                    
          </tr>
        </table>
      </div>
    </div>



  </head>
  
  <body>
  <!--CABEÇALHO DO RELATORIO-->
    <div class="container">
      <div class="table-responsive">
        <table class="table"> 
          <tr>
            <td ><img src="../imagens/logoeta6.jpg"   height="75px" width="60px" /></td>
            <td valign="center"><center><h2>Sexto Esquadrão de Transporte Aéreo</center></h2></td>                              
          </tr>
          <tr>
            <td colspan="2"><center><b><h4>'.$titulo.'</h4></b></center></td>                              
          </tr>          
        </table>
      </div>
    </div>

    <div class="container">
      <div class="table-responsive">
        <table class="table"> 
          <tr>
            <td ><p class="text-success">Quantidade de <b>'.$titulo.': '.$qtdItensMaterial.'.</b></p></b></td>                           
          </tr>                
        </table>
      </div>
      <div class="table-responsive">
        <table class="table table-bordered"> 
          <tr>
            <th >Nome</th>
            <th >Pn/Sn</th>
            <th >Patrimônio</th>
            <th >Obs.</th>
            <th >Projeto</th>
            <th >Local</th>
            <th >Especialidade</th>
            <th >Estoque</th>                                                     
            <th >Emprestado</th>
            <th >Total</th>                               
          </tr> 
          '.utf8_encode($itens).'                
        </table>
      </div>
<br><br><br><br><br><br>




      <footer>
        <p>©  Esquadrão Guará - Seção de Informática  2015</p>
      </footer>
    </div>


    <br><br><br>

  </body>

</html>  ';


    //echo $pedido;  
$mpdf = new mPDF('utf-8', 'A4-L');
$mpdf->WriteHTML($pedido);
/*
 * F - salva o arquivo NO SERVIDOR
 * I - abre no navegador E NÃO SALVA
 * D - chama o prompt E SALVA NO CLIENTE
 */

$mpdf->Output($arquivo, 'I');

  ?>






Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por FamiluMoura
      Tenho um projeto em MVC aonde instalei a biblioteca mPdf, gerar o arquivo pdf normalmente e abre no Edge, porem qdo vou abrir no Adobe ele diz que o arquivo esta corrompido ou não tem suporte para este tipo de arquivo. O erro aconte ate mesmo com o exemplo da Biblioteca do mpdf
      o código abaixo e genérico do CriarPdf.php

       
      public function pdf(array $Dados) { $this->Dados = $Dados; try { $mpdf = new \Mpdf\Mpdf([ 'format' => [150, 130], 'mode' => 'c', 'margin_left' => 5, 'margin_right' => 5, 'margin_top' => 26, 'margin_bottom' => 15, 'margin_header' => 5, 'margin_footer' => 5, ]); $html = '<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <style> @page {size: auto;odd-header-name: html_myHeader1;odd-footer-name: html_myFooter1;} .size-10{font-size: 10px;} .size-16{font-size: 25px;color:#FF0000;} .negrito{font-weight: bold;} .espaco{margin: 20px;} .linha{width: 100%;border: 1px solid #000000;} .col-2 {float: left;width: 8.333333%;} .col-3 {float: left;width: 25%;} .col-4{float: left;width: 33%;} .col-6 {float: left;width: 50%;} .col-8{float: left;width: 66%;} .text-center {text-align: center !important;} .text-right {text-align: right !important;} .imgTamanho{width: 50%;} a{padding: 5px;text-decoration: none;} td{padding: 5px;} .border-bottom{border-bottom: 1px solid #000000;} </style> </head> <body> <htmlpageheader name="myHTMLHeader1"> <table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"> <tr> <td width="100%">"Logo da Empresa no Cabeçalho"</td> </tr> </table> </htmlpageheader> <htmlpagefooter name="myHTMLFooter1"> <table width="100%" style="border-top: 1px solid #000000; vertical-align: top; font-family: sans; font-size: 8pt;"> <tr> <td width="100%" align="center"><span style="font-size:12pt">' . $this->Dados['imagem'] . '</span></td> </tr> </table> </htmlpagefooter> <!-- set the headers/footers - they will occur from here on in the document --> <!--mpdf <sethtmlpageheader name="myHTMLHeader1" page="O" value="on" show-this-page="1" /> <sethtmlpageheader name="myHTMLHeader1Even" page="E" value="on" /> <sethtmlpagefooter name="myHTMLFooter1" page="O" value="on" show-this-page="1" /> <sethtmlpagefooter name="myHTMLFooter1" page="E" value="on" /> mpdf--> <table width="600px"> <tr> <td class="text-center" >' . $this->Dados['corpo'] . '</td> //Aqui uma tabela que envio para criar o pdf </tr> </table> </body> </html> $mpdf->WriteHTML($html); $mpdf->Output(); } catch (\Mpdf\MpdfException $e) { // Note: safer fully qualified exception name used for catch // Process the exception, log, print etc. echo $e->getMessage(); }  
    • Por Carcleo
      Estou tentando rotacionar um texto no PDF com mPDF mas não estou conseguindo.
      $css = ' <style> ul { } ul li { float: left; list-style: none; /*necessáro width no campo */ } ul li span.vertical { display: block; //transform: rotate(270deg); /*necessáro display: block*/ text-rotate : 270; } </style>'; $html = ' <ul> <li style="width: 150px"><span class="vertical">Elefante</span></li> <li style="width: 150px"><span>Não</span></li> <li style="width: 150px"><span>Come</span></li> <li style="width: 150px"><span class="vertical">Bananada</span></li> </ul>'; require_once "../vendor/autoload.php"; $pdf = new \Mpdf\Mpdf(['debug' => true]); $pdf->AddPage(); $pdf->charset_in = "UTF-8"; $pdf->SetFont('Arial','B',16); $pdf->WriteHTML( $css, 1 ); $pdf->WriteHTML( $html ); $pdf->Output(); Obs.: O restante do estilo funciona normal.
       
      O problema é apenas no PDF. No navegador, os spans giram normalmente.
    • Por Fabio Jonas
      Pessoal, criei um relatório no php + html e gero ele pelo mpdf, ate ai tudo certo inclusive ele gera o índice, mas ele gera da seguinte maneira:
       
      1-Item 5
      2-item 6
      3-item 12
      O que preciso que ele insira os pontinhos apos a descrição do item como esse exemplo:
       
      1-Item............................................ 5
      2-item............................................ 6
      3-item.......................................... 12
       
      Consultei a documentação e pesquisei na internet e não encontrei nada que possa me ajudar, alguém chegou a fazer índice e conseguiu inserir esses pontinhos, caso tenha conseguido fazer em fPDf também me ajudaria pois como o Mpdf é baseado no fPdf, eu daria um jeito de adaptar.
       
      Agradeço a ajuda
       
    • Por fabiodaros
      Pessoal , queria carregar um arquivo tpl direto para o Mpdf, mas ele não leva as varíaveis que vem do MySql nem do forech.
       
      Alguem poderia me ajudar.
      $msg = $smarty->fetch(Rotas::get_SiteRaiz().'/view/carrinho.tpl'); $mpdf = new \Mpdf\Mpdf(); //$mpdf->SetDocTemplate($msg); $mpdf->allow_charset_conversion= true; $mpdf->charset_in = 'UTF-8'; $mpdf->WriteHTML($msg,0); $mpdf->Output();  
    • Por ammazzo
      Olá galera, 
       
      Eu tenho uma tabela com 2000 registros e gero um relatório através desta tabela e left join de mais outras 3 que complementam a informação da mesma. 
       
      Gostaria de saber se é razoável o tempo de 3m20s para a geração da mesma em um sistema. Lembrando que tenho índices criados e a query leva 0.034 segundos executada no banco de dados. 
       
      Não sei se o fato do mpdf ter sua estrutura baseada em HTML e css afeta o tempo de montagem da mesma (com o foreach essa estrutura aumenta). 
       
      Se alguém já utiliza mpdf e puder me dar uma dica, ou se é normal esse tempo tendo em vista que melhores soluções para php ainda não existam ou se outras bibliotecas reduzem o tempo, eu agradeço. 
       
      Um abraço.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.