Jump to content
alissong

Como imprimir ou salvar vários páginas em pdf usando a classe mpdf

Recommended Posts

Pessoal tenho esse arquivo rel_darf_mpdf.php que estava funcionando, mas quando passou de 1500 registros o arquivo PDF veio em branco. Então como faço para imprimir ou salvar uma página a cada 500 registro. Exemplo: 0 a 500 - pagina 1 , 501 a 1000 - pagina 2 , 1001 a 1500 - pagina 3. Veja o script em php que usa a classe mpdf que funcionava com até 1000 registros.

<?php
//Funções para se conectar no banco de dados
 require ("verifica.php");
 include("conexao/bdinc.php"); 

//Fecha conexão

// aumenta o tempo de execução do script
set_time_limit(0);

// aumenta a memória
ini_set("memory_limit","256M");

//Selecionar todos os darf da tabela
//$nDarf = $_GET["id"];
$sql_darf = "SELECT * FROM con_darf ORDER BY id_darf LIMIT 0,1000";
if ($res_darf = mysqli_query($conn, $sql_darf)) {

//Passando data do banco "AAAA-MM-DD" para "DD/MM/AAAA"
function mostraData ($data_empenho) { 
if ($data_empenho!='') {
return (substr($data_empenho,8,2).'/'.substr($data_empenho,5,2).'/'.substr($data_empenho,0,4));   
}   
else { return ''; }   
}
//Fim arquivos php

$html= '
<!DOCTYPE html>
<html lang="pt-br">
  <head> 
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1"> 
</head>
<body>
<div class="card border-dark">
  <div class="card-header bg-dark text-white"></div>  
	<div class="card-body">         
    	<div class="table-responsive-sm">
            <table class="table table-striped">
				        <caption>RELAT&Oacute;RIO DAS DARF</caption>
              <thead>
                <tr>
					          <th nowrap="nowrap">ID</th>
                    <th nowrap="nowrap"> Data Emiss&atilde;o</th>
                    <th nowrap="nowrap">Data Vencimento</th>
                    <th nowrap="nowrap">N&#176; DARF</th>
                    <th nowrap="nowrap">Contribuinte</th>
                    <th nowrap="nowrap">Nota Pagto</th>
                    <th nowrap="nowrap">Processo</th>
                    <th nowrap="nowrap">Per&iacute;odo Apura&ccedil;&atilde;o</th>
                    <th nowrap="nowrap">Cod. Receita</th>
					          <th nowrap="nowrap">Base C&aacute;lculo</th>
					          <th nowrap="nowrap">Vr. DARF</th>
				            <th nowrap="nowrap">Empenho</th>
					          <th nowrap="nowrap">Subitem</th>		
                </tr>
              </thead>
				<tbody>';
?>
<?php
 
while ($linha = mysqli_fetch_array($res_darf)){   
  
        
$html .= '<tr>';
$html .= '<td nowrap="nowrap">'.$linha[0].'</td>';
$html .= '<td nowrap="nowrap">'.mostraData($linha[1]).'</td>';
$html .= '<td nowrap="nowrap">'.mostraData($linha[2]).'</td>';
$html .= '<td nowrap="nowrap">'.$linha[3].'</td>';
$html .= '<td nowrap="nowrap">'.$linha[5].'</td>';
$html .= '<td nowrap="nowrap">'.$linha[6].'</td>';
$html .= '<td nowrap="nowrap">'.$linha[7].'</td>';
$html .= '<td nowrap="nowrap" style = "text-align: right";>'.mostraData($linha[8]).'</td>';
$html .= '<td nowrap="nowrap" style = "text-align: right";>'.$linha[9].'</td>';
$html .= '<td nowrap="nowrap" style = "text-align: right";>'.number_format($linha[10], 2, ',', '.').'</td>';
$html .= '<td nowrap="nowrap" style = "text-align: right";>'.number_format($linha[11], 2, ',', '.').'</td>';
$html .= '<td nowrap="nowrap">'.$linha[12].'</td>';
$html .= '<td nowrap="nowrap">'.$linha[13].'</td>';
$html .= '</tr>';
    
 
	} // Fecha loop while 
	} // Fecha o IF 
        
$html .=		'</tbody>
			</table>
		</div>                  
	</div>
</div>
</body>
</html>
';// Fecha o código HTML

?>
<?php
/* free result set */
mysqli_free_result($res_darf);

/* Fechar conexão */
mysqli_close($conn);

// Inicia a classe Mpdf
require_once("mpdf/mpdf.php");

//$html =  utf8_encode($html); 
$mpdf=new mPDF('c','A4'); 

//É fundamental definir o TIMEZONE de nossa região para que não tenhamos problemas com a geração.
date_default_timezone_set('America/Sao_Paulo');

// coloca o titulo no arquivo
$mpdf->SetTitle('RELATÓRIO DAS DARF');

// Coloca o usuário logado no rodapé
$user_logado = $_SESSION['login'];

// coloca o rodape no arquivo
$mpdf->SetFooter("{DATE j/m/Y H:i}|Pagina {PAGENO} de {nb}|$user_logado/contabilidade");

//define o caminho da folha de estilo
$stylesheet = file_get_contents("css/tabela.css");

//coloca o estilo no html
$mpdf->WriteHTML($stylesheet,1);

// incorpora o corpo ao PDF na posição 2 e deverá ser interpretado como footage. Todo footage é posicao 2 ou 0(padrão).
$mpdf->WriteHTML($html,2);

// define um nome para o arquivo PDF
$arquivo = 'Darf.pdf';

// Limpa o buffer de saída
ob_clean(); 

// gera o relatório
$mpdf->Output($arquivo,'I');

exit();
?>

Alguém pode dizer como faço isso?

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 drx
      Olá Pessoal!
       
      É possível editar meu código em php em qualquer página no WP ?
      E com relação à segurança no WP, qual procedimento devo realizar? Devo deletar algum arquivo dentro da instalação do WP?
      Desde já agradeço.
    • By Jamersonjds
      Pra aprendizado, estou tentando listar dados do banco de dados e trazer os resultados para meu html.
      Estou conseguindo fazer com este código.
       
      <!DOCTYPE html> <html lang="en"> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta charset="UTF-8"> <title>Chat</title> <link rel="stylesheet" href="../public/style/reset.css"> <link rel="stylesheet" href="../public/style/chatStyle.css"> <!-- É adicionado a biblioteca jquery e o fontAwesome --> <link href="https://fonts.googleapis.com/css?family=Ubuntu&display=swap" rel="stylesheet"> <link href="../public/style/fontawesome/css/all.css" rel="stylesheet"> <script src="../public/js/jquery.min.js"></script> </head> <style> .test2 { cursor: pointer; } </style> <script> $(document).ready(function(){ var itens = "", url = "../includes/configs/chat.php", itens2 = ""; // Capturar dados usando Método AJAX do jquery $.ajax({ url: url, cache: false, dataType: "json", success: function(retorno){ for(var i = 0; i<retorno.length; i++){ itens += "<li>"; itens += "<a class='test2' onclick='function retornou(){$('.Tes22').html('wadwd')}'>"; itens += "<div class='imgUserList'>"; itens += "<div class='widthUserImg'>"; itens += "<div class='imgUserListD'><img src='https://avatars0.githubusercontent.com/u/3966553?s=460&v=4' alt=''></div>"; itens += "</div>"; itens += "<div class='textUserList'>"; itens += "<input type='text' class='pegarID' value='" + retorno[i].id + "'>"; itens += "<span class='title'>" + retorno[i].email + "</span>"; itens += "<h1 class='title'>Está online</h1>"; itens += "</div>"; itens += "</div>"; itens += "</a>"; itens += "</li>"; } $(".pessoas").html(itens); } }) }); </script> <body onload="carregarItens()"> <div class="container"> <div class="listaPessoas"> <div class="headerPeople title"> <h1>Contatos</h1> <h2 class="Tes22"></h2> </div> <ul class="pessoas"> <!-- <li> <a href=""> <div class="imgUserList"> <div class="widthUserImg"> <div class="imgUserListD"><img src="https://avatars0.githubusercontent.com/u/3966553?s=460&v=4" alt=""></div> </div> <div class="textUserList"> <span class="title">10.1.196.90</span> <h1 class="title">Está online</h1> </div> </div> </a> </li> --> </ul> </div> <div class="chat"> <div class="chatHeader"> <div class="title text"> <h1>james</h1> </div> <div class="menuUser title"> <i class="fas fa-ellipsis-h"></i> </div> </div> <div class="chatMessage"> </div> <div class="chattext"> <form action=""> <input type="text" id="modal"> <button><i class="fas fa-paper-plane"></i></button> </form> </div> </div> <div class="infoPessoas"> </div> </div> <script src="../public/js/chat.js"></script> </body> </html> Porém estou querendo pegar apenas o ID e colocar em um <h2> e não estou conseguindo.
      Exemplo: Ao clicar em um dado vindo do banco de dados como é listado acima eu colocar o ID dele no <h2>.
       
      Este é meus dados vindo do PHP já no json.
      echo json_encode($dados, JSON_PRETTY_PRINT);  
    • By jonathasouza
      Como posso criar uma query no php que não duplique varias vezes o valor?
       
      Gostaria de colocar apenas um valor desses por vez, e não a mesma coisa repetida.
       
        <?php
      $conexao = mysqli_connect('localhost', 'root', '', 'analistas');
      if(mysqli_connect_errno($conexao)){
      echo 'Failed to connecto to database'.mysqli_connect_error();}

      $query= mysqli_query($conexao, "SELECT DISTINCT * FROM tecnicos, ordem");
      ?>

    • By Rengavitp
      Boa noite pessoal, preciso ajuda com o script abaixo, ele 'e para baixar arquivos do site, ele baixa, mas o arquivo fica sempre corrompido e nao abre, (arquivos sao pdfs). Alguem pode me ajuda?
       
      <?php // Define o tempo máximo de execução em 0 para as conexões lentas set_time_limit(0); // Arqui você faz as validações e/ou pega os dados do banco de dados $aquivoNome = '62708_1.pdf'; // nome do arquivo que será enviado p/ download $arquivoLocal = '../../danfe/'.$aquivoNome; // caminho absoluto do arquivo // Verifica se o arquivo não existe if (!file_exists($arquivoLocal)) { echo "arquivo nao encontrado!"; // Exiba uma mensagem de erro caso ele não exista exit; } // Aqui você pode aumentar o contador de downloads // Definimos o novo nome do arquivo $novoNome = 'danfe.pdf'; // Configuramos os headers que serão enviados para o browser header('Content-Description: File Transfer'); header('Content-Disposition: attachment; filename="'.$novoNome.'"'); header('Content-Type: application/octet-stream'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize($aquivoNome)); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Expires: 0'); // Envia o arquivo para o cliente readfile($aquivoNome); ?>  
    • By jonathasouza
      Gostaria de colocar um botão que quando clicasse no enviar do Modal enviasse o valor $nome do PHP na tabela e que o $nome não ficasse aparecendo na tabela sem que que fizesse essa solicitação pelo botão, alguém poderia me ajudar?
       

          <?php
      $nome = isset($_GET["nome"])? $_GET["nome"]:null;
      $matricula = isset($_GET["matricula"])? $_GET["matricula"]:null;
      $solicitacao = isset($_GET["solicitacao"])? $_GET["solicitacao"]:null;
      $prioridade = isset($_GET["prioridade"])? $_GET["prioridade"]:null;
      $orgao = isset($_GET["orgao"])? $_GET["orgao"]:null;
      $conexao = mysqli_connect('localhost', 'root', '', 'analistas');
      $query = "SELECT `solicitacao`,`prioridade`,`orgao`, `nome` from `analistas` WHERE `analistas`";
      if (mysqli_query($conexao, $query))
          { ?>
       

                                  <?php
      $conexao = mysqli_connect('localhost', 'root', '', 'analistas');
      if(mysqli_connect_errno($conexao)){
      echo 'Failed to connecto to database'.mysqli_connect_error();}

      $query= mysqli_query($conexao, "SELECT DISTINCT * FROM tecnicos, ordem");
      ?>
                                  <?php while($rows = mysqli_fetch_array($query)): ?>
                                  <tr>
                                      <td><?php echo $rows['solicitacao']; ?></td>
                                      <td><?php echo $rows['prioridade']; ?></td>
                                      <td></td>
                                      <td></td>
                                      <td><?php echo $rows['orgao']; ?></td>
                                      <td><?php echo $rows['nome']; ?></td>
                                      <td></td>
                                  </tr>
                                  <?php endwhile; ?>
                              </tbody>
                          </table>
       
                          <!-- Modal -->
                          <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
                              <div class="modal-dialog" role="document">
                                  <div class="modal-content">
                                      <div class="modal-header">
                                          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                                          <h4 class="modal-title" id="myModalLabel"><strong>Solicitação</strong></h4>
                                      </div>
                                      <div class="modal-body">
                                          <div class="insertHere">
                                          </div>
                                      </div>
                                      <div class="modal-footer">
                                          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                          <button class="btn btn-success" type="submit" data-dismiss="modal" onclick="generate()">Confirmar</button>
                                      </div>
                                  </div>
                              </div>
                          </div>
×

Important Information

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