Ir para conteúdo
Fórum Script Brasil
  • 0

Paginaçao em pdf


Carlos Rocha

Pergunta

Olá pessoal.

Estou gerando arquivos pdf usando a classe dompdf.

Tudo vai bem. Exceto uma coisa: Os arquvos pdf's são gerados mas não sai os numeros das paginas.

Tipo assim: É um relatório de vendas. No arquivo pdf não esta paginado. Ou seja, desce aquela pagina extensa. Na hora de gerar o pdf ele tambem sai assim. Porem, preciso fazer com que cada pagina,não da paginação de resultados da consulta sql,mas sim pagina pdf gerada na conversão do php mostre seu numero. Por exemplo. A conversão gerou 10 paginas. Eu gostaria de mostrar :

1/10

2/10

...

Entenderam?

Pois é. Só que tem mais uma coisa: Caso eu precise imprimir em papel esse arquivo pdf, essa paginaçao tem que sair.

Como faço isso?

Segue o código que estou usando e grato a quem puder ajudar.

<?php 
ob_start();
session_start();
header('Content-Type: text/html; charset=utf-8'); 
include("../global/config/const.php"); 
include("../global/config/conexao.php");  
include("../global/funcoes_php/formata_cep.php");  
include("../global/funcoes_php/formata_tel.php");  
include("../global/funcoes_php/formata_cpf.php");  
include("../global/funcoes_php/formata_cnpj.php");  
include("../global/funcoes_php/formata_data.php");  
?>
<html>
<head>
<title><?=$titulo_admin;?></title>
<link href="../global/config/stilo.css" rel="stylesheet" type="text/css"> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<?php
if ($acao=="gerapdf") {
      $msg="Deseja realmente excluir essa pedido?";
      $icone = "<img border=0 src=../img/saiba_mais.png  alt='Saiba Mais'>";        
      $cabecalho=$MySQL->Query("
                                  select 
                                   c.nome, c.razaosocial, pc.preco_total, pc.data
                                  from 
                                   pedidos_cliente pc
                                    inner join clientes c on pc.id_cliente=c.id              
                                  where 
                                   pc.id_pedido_cliente=$id_do_pedido
                               ");
      list($nome_cli, $razao_cli, $preco_total, $data)=mysql_fetch_row($cabecalho);
      $texto= "<table align=\"center\" border=\"1\" width=\"800\">
              <tr>
                  <td align=\"center\" colspan=\"7\"><h3>Vizualização do Pedido</h3>
                  </td>
                  </tr>
              <thead><tr>
                  <td align=\"center\"colspan=\"3\">Pedido nº: $id_do_pedido<br>
                                                    Cliente: $nome_cli$razao_cli
                  </td>
                  <td align=\"center\"colspan=\"4\">
                               Data do pedido: ".formata_data($data)."<br>
                               Valor Total do pedido: R$ ".number_format($preco_total, 2, '.', '')."
                  </td>                  

              </tr>          
              <tr>
                    <td           align=center>Lista</td>
                    <td           align=center>Produto</td>            
                    <td           align=center>Qtde. na caixa</td>
                    <td           align=center>Preço por<br>unidade na caixa</td>
                    <td           align=center>Valor Unitário(R$:)</td>
                    <td           align=center>Qtde</td>
                    <td           align=center>Total:</td>
                </tr></thead>    
              ";    
      $lista_fornece = $MySQL->query("
                             SELECT
                                f.id, 
                               concat( IFNULL(f.nome, ''),  IFNULL (f.razaosocial , '' )), 
                               concat( IFNULL(f.cpf, ''),  IFNULL (f.cnpj , '' )), 
                               pe.pgto_prazo,
                               pe.pgto_tipo, 
                               pe.observa_cli
                              from 
                               pedidos pe 
                                 inner join pedidos_cliente pc on pc.id_pedido_cliente=pe.ID_PEDIDO
                                 inner join produtos p on pe.ID_PRODUTO=p.id
                                 inner join grupos g on p.grupo=g.id_grupo
                                 inner join fornecedores  f on p.fornecedor=f.id               
                              where 
                                 pc.id_pedido_cliente=$id_do_pedido 
                              GROUP by 
                                 concat( IFNULL(f.nome, ''),  IFNULL (f.razaosocial , '' ))
                                     ");
      while(list($fornece_id, $fornecedor, $dcto, $pgto_tipo, $pgto_prazo, $observa_cli)=mysql_fetch_row($lista_fornece))
       {
         if(strlen($dcto)==11) {$dctovalor=formata_cpf($dcto); $dcto_tipo="CPF";}
          if(strlen($dcto)==14)  {$dctovalor=formata_cnpj($dcto); $dcto_tipo="CNPJ";}

         $texto.= "<tr>
                 <td align=left colspan=3>Fornecedor: &nbsp;&nbsp;" . $fornecedor. " - ".$dcto_tipo."= ".$dctovalor."</td>
                 <td align=left colspan=4>"; 
                 if($pgto_tipo=="1")
                 {
                      $texto.= "Condição de pagamento escolhida: À Vista";
                 }
                 if($pgto_tipo=="2")
                 {
                     
                     $texto.= "Condição de pagamento escolhida: À Prazo<br>";
                     $texto.= "Prazos para pagamento para produtos deste fornecedor:". $pgto_prazo;

                 }
         $texto.= "  </td>
                </tr>";
         $texto.= " <tr><td align=left colspan=7>";
         $texto.= " Observação do cliente para o fornecedor: " . $observa_cli;
         $texto.= " </td>
                </tr>";
                
      $lista = $MySQL->query("
                              select 
                                 p.foto, 
                                 p.nome, 
                                 f.nome, 
                                 f.razaosocial, 
                                 g.nome, 
                                 p.quantidadecaixa, 
                                 pe.preco_uni, 
                                 pe.quantidade, 
                                 pe.semi_total, 
                                 pc.preco_total, 
                                 pe.ID_LISTA, 
                                 pe.ID_PRODUTO
                              from 
                               pedidos pe 
                                 inner join pedidos_cliente pc on pc.id_pedido_cliente=pe.ID_PEDIDO
                                 inner join produtos p on pe.ID_PRODUTO=p.id
                                 inner join grupos g on p.grupo=g.id_grupo
                                 inner join fornecedores  f on p.fornecedor=f.id               
                              where 
                                 pc.id_pedido_cliente=$id_do_pedido and f.id=$fornece_id
                              order by
                                 p.nome      
                             ");
        $total_fornece=0.00;                                                  
      while(list($foto, $produto_nome, $fornecedor_nome, $fornecedor_razao, $grupo, $quantidade_caixa, $preco_produto, $quantidade, $semitotal, $total, $lista_numero, $produto_numero)=mysql_fetch_row($lista))
       {
           
    include("../global/funcoes_php/foto_ver.php");
      $total_fornece=$total_fornece+$semitotal;
      $texto.= "<tr>
                    <td align=center>$lista_numero</td>
                    <td align=left>$produto_nome</td>                
                    <td align=center>$quantidade_caixa</td>
                     <td align=right>R$ ". number_format($preco_produto/$quantidade_caixa, 2, '.', '')."</td>
                    <td align=right>R$ ". number_format($preco_produto, 2, '.', '')."</td>
                    <td align=center>$quantidade</td>
                    <td align=right>R$ ". number_format($semitotal, 2, '.', '')."</td>
                </tr>
              ";
                        }
      $texto.= "<tr><td align=center colspan=7>
                      Total de pedidos para este fornecedor: R$ ". number_format($total_fornece, 2, '.', '')."
                    </td></tr>";
       }
                    
    require_once("../global/funcoes_php/dompdf/dompdf_config.inc.php");

    $dompdf = new DOMPDF();
    $html = iconv("utf-8","iso-8859-1",$texto);
    $dompdf->load_html($html);
    $dompdf->set_paper('legal', 'landscape');
    $dompdf->render();
    $dompdf->stream(".pdf/relatorio.pdf");
}
 ?>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

http://code.google.com/p/dompdf/wiki/FAQ

Q: Is there a way to add headers and footers or page numbers?

A: Yes, you can add headers and footers using inline PHP. Headers and footers are added by accessing the PDF renderer directly using inline PHP embedded in your HTML file. This is similar to creating PDFs with FPDF or ezPDF from R&OS, in that you can draw lines, boxes and text directly on the PDF. Here are step by step instructions: ...

Link para o comentário
Compartilhar em outros sites

  • 0

Pelo que entendi seria assim:

...
  require_once("../global/funcoes_php/dompdf/dompdf_config.inc.php");

    $font = Font_Metrics::get_font("helvetica", "bold"); 
          
if ( !isset($dompdf) ) {           
    $dompdf = new DOMPDF();
    $html = iconv("utf-8","iso-8859-1",$texto);
    $dompdf->load_html($html);
    $dompdf->set_paper('legal', 'landscape');
    $dompdf->page_text(72, 18, "Header: {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0)); 
    $dompdf->render();
    $dompdf->stream(".pdf/relatorio.pdf");          
}
}
 ?>
</body>
</html>

Assim não deu certo. Não gera o pdf e dá pagina não pode ser exibida;

Onde estou errando?

Link para o comentário
Compartilhar em outros sites

  • 0

Tambem tentei assim e deu no mesmo:

...

            
 if ( !isset($pdf) ) {
  require_once("../global/funcoes_php/dompdf/dompdf_config.inc.php");
 // Configurações para ajustar o tamanho do texto, cores, e dimensões da area do arquivo
 $font = Font_Metrics::get_font("Helvetica");
 $size = 9;
 $color = array(0,0,0);
 $text_height = Font_Metrics::get_font_height($font,$size);
 $foot = $pdf->open_object();
 $w = $pdf->get_width();
 $h = $pdf->get_height();
 $pdf->close_object();
 $pdf->add_object($font, "all");
 // Cria uma linha no rodapé
 $y = $h - $text_height - 45;
 $pdf->line(12, $y, $w - 16, $y, $color, 0.5);
 // Insere um texto um pouco acima da linha do rodapé
 $_texto = utf8_encode($texto);
 $w1 = Font_Metrics::get_text_width($_texto , $font, 7);
 $y = $h - $text_height - 23;
 $pdf->page_text($w / 2 - $w1 / 2, $y, $_texto , $font, 7, $color);
 // Numero da pagina
 $text = utf8_encode("Página {PAGE_NUM} de {PAGE_COUNT} ");
 $width = Font_Metrics::get_text_width("Pagina 1 de 2", $font, 6);
 $y = $h - $text_height - 2;
 $w = $w - 14;
 $pdf->page_text($w - $width, $y, $text, $font, 6, $color);
 }
}
?>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Ví um exemplo na net, que se eu adicinasse o script abaixo no arquvo daria certo:

<script type="text/php">
 if ( isset($pdf) ) {
 // Configurações para ajustar o tamanho do texto, cores, e dimensões da area do arquivo
 $font = Font_Metrics::get_font("Helvetica");
 $size = 9;
 $color = array(0,0,0);
 $text_height = Font_Metrics::get_font_height($font,$size);
 $foot = $pdf->open_object();
 $w = $pdf->get_width();
 $h = $pdf->get_height();
 $pdf->close_object();
 $pdf->add_object($font, "all");
 // Cria uma linha no rodapé
 $y = $h - $text_height - 45;
 $pdf->line(12, $y, $w - 16, $y, $color, 0.5);
 // Insere um texto um pouco acima da linha do rodapé
 $_texto = utf8_encode("Texto Texto");
 $w1 = Font_Metrics::get_text_width($_texto , $font, 7);
 $y = $h - $text_height - 23;
 $pdf->page_text($w / 2 - $w1 / 2, $y, $_texto , $font, 7, $color);
 // Numero da pagina
 $text = utf8_encode("Página {PAGE_NUM} de {PAGE_COUNT} ");
 $width = Font_Metrics::get_text_width("Pagina 1 de 2", $font, 6);
 $y = $h - $text_height - 2;
 $w = $w - 14;
 $pdf->page_text($w - $width, $y, $text, $font, 6, $color);
 }
 </script>
Até gera o pdf. Porem, corrompido. Onde estou errando? Segue o código todo que estou usando:
<?php 
ob_start();
session_start();
header('Content-Type: text/html; charset=utf-8'); 
include("../global/config/const.php"); 
include("../global/config/conexao.php");  
include("../global/funcoes_php/formata_cep.php");  
include("../global/funcoes_php/formata_tel.php");  
include("../global/funcoes_php/formata_cpf.php");  
include("../global/funcoes_php/formata_cnpj.php");  
include("../global/funcoes_php/formata_data.php");  
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<html>
<head>
<title><?=$titulo_admin;?></title>
<link href="../global/config/stilo.css" rel="stylesheet" type="text/css"> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/php">
 if ( isset($pdf) ) {
 // Configurações para ajustar o tamanho do texto, cores, e dimensões da area do arquivo
 $font = Font_Metrics::get_font("Helvetica");
 $size = 9;
 $color = array(0,0,0);
 $text_height = Font_Metrics::get_font_height($font,$size);
 $foot = $pdf->open_object();
 $w = $pdf->get_width();
 $h = $pdf->get_height();
 $pdf->close_object();
 $pdf->add_object($font, "all");
 // Cria uma linha no rodapé
 $y = $h - $text_height - 45;
 $pdf->line(12, $y, $w - 16, $y, $color, 0.5);
 // Insere um texto um pouco acima da linha do rodapé
 $_texto = utf8_encode("Texto Texto");
 $w1 = Font_Metrics::get_text_width($_texto , $font, 7);
 $y = $h - $text_height - 23;
 $pdf->page_text($w / 2 - $w1 / 2, $y, $_texto , $font, 7, $color);
 // Numero da pagina
 $text = utf8_encode("Página {PAGE_NUM} de {PAGE_COUNT} ");
 $width = Font_Metrics::get_text_width("Pagina 1 de 2", $font, 6);
 $y = $h - $text_height - 2;
 $w = $w - 14;
 $pdf->page_text($w - $width, $y, $text, $font, 6, $color);
 }
 </script>


</head>
<body>
<?php
if ($acao=="gerapdf") {
      $msg="Deseja realmente excluir essa pedido?";
      $icone = "<img border=0 src=../img/saiba_mais.png  alt='Saiba Mais'>";        
      $cabecalho=$MySQL->Query("
                                  select 
                                   c.nome, c.razaosocial, pc.preco_total, pc.data
                                  from 
                                   pedidos_cliente pc
                                    inner join clientes c on pc.id_cliente=c.id              
                                  where 
                                   pc.id_pedido_cliente=$id_do_pedido
                               ");
      list($nome_cli, $razao_cli, $preco_total, $data)=mysql_fetch_row($cabecalho);
      $texto= "<table align=\"center\" border=\"1\" width=\"800\">
              <tr>
                  <td align=\"center\" colspan=\"7\"><h3>Vizualização do Pedido</h3>
                  </td>
                  </tr>
              <thead><tr>
                  <td align=\"center\"colspan=\"3\">Pedido nº: $id_do_pedido<br>
                                                    Cliente: $nome_cli$razao_cli
                  </td>
                  <td align=\"center\"colspan=\"4\">
                               Data do pedido: ".formata_data($data)."<br>
                               Valor Total do pedido: R$ ".number_format($preco_total, 2, '.', '')."
                  </td>                  

              </tr>          
              <tr>
                    <td           align=center>Lista</td>
                    <td           align=center>Produto</td>            
                    <td           align=center>Qtde. na caixa</td>
                    <td           align=center>Preço por<br>unidade na caixa</td>
                    <td           align=center>Valor Unitário(R$:)</td>
                    <td           align=center>Qtde</td>
                    <td           align=center>Total:</td>
                </tr></thead>    
              ";    
      $lista_fornece = $MySQL->query("
                             SELECT
                                f.id, 
                               concat( IFNULL(f.nome, ''),  IFNULL (f.razaosocial , '' )), 
                               concat( IFNULL(f.cpf, ''),  IFNULL (f.cnpj , '' )), 
                               pe.pgto_prazo,
                               pe.pgto_tipo, 
                               pe.observa_cli
                              from 
                               pedidos pe 
                                 inner join pedidos_cliente pc on pc.id_pedido_cliente=pe.ID_PEDIDO
                                 inner join produtos p on pe.ID_PRODUTO=p.id
                                 inner join grupos g on p.grupo=g.id_grupo
                                 inner join fornecedores  f on p.fornecedor=f.id               
                              where 
                                 pc.id_pedido_cliente=$id_do_pedido 
                              GROUP by 
                                 concat( IFNULL(f.nome, ''),  IFNULL (f.razaosocial , '' ))
                                     ");
      while(list($fornece_id, $fornecedor, $dcto, $pgto_tipo, $pgto_prazo, $observa_cli)=mysql_fetch_row($lista_fornece))
       {
         if(strlen($dcto)==11) {$dctovalor=formata_cpf($dcto); $dcto_tipo="CPF";}
          if(strlen($dcto)==14)  {$dctovalor=formata_cnpj($dcto); $dcto_tipo="CNPJ";}

         $texto.= "<tr>
                 <td align=left colspan=3>Fornecedor: &nbsp;&nbsp;" . $fornecedor. " - ".$dcto_tipo."= ".$dctovalor."</td>
                 <td align=left colspan=4>"; 
                 if($pgto_tipo=="1")
                 {
                      $texto.= "Condição de pagamento escolhida: À Vista";
                 }
                 if($pgto_tipo=="2")
                 {
                     
                     $texto.= "Condição de pagamento escolhida: À Prazo<br>";
                     $texto.= "Prazos para pagamento para produtos deste fornecedor:". $pgto_prazo;

                 }
         $texto.= "  </td>
                </tr>";
         $texto.= " <tr><td align=left colspan=7>";
         $texto.= " Observação do cliente para o fornecedor: " . $observa_cli;
         $texto.= " </td>
                </tr>";
                
      $lista = $MySQL->query("
                              select 
                                 p.foto, 
                                 p.nome, 
                                 f.nome, 
                                 f.razaosocial, 
                                 g.nome, 
                                 p.quantidadecaixa, 
                                 pe.preco_uni, 
                                 pe.quantidade, 
                                 pe.semi_total, 
                                 pc.preco_total, 
                                 pe.ID_LISTA, 
                                 pe.ID_PRODUTO
                              from 
                               pedidos pe 
                                 inner join pedidos_cliente pc on pc.id_pedido_cliente=pe.ID_PEDIDO
                                 inner join produtos p on pe.ID_PRODUTO=p.id
                                 inner join grupos g on p.grupo=g.id_grupo
                                 inner join fornecedores  f on p.fornecedor=f.id               
                              where 
                                 pc.id_pedido_cliente=$id_do_pedido and f.id=$fornece_id
                              order by
                                 p.nome      
                             ");
        $total_fornece=0.00;                                                  
      while(list($foto, $produto_nome, $fornecedor_nome, $fornecedor_razao, $grupo, $quantidade_caixa, $preco_produto, $quantidade, $semitotal, $total, $lista_numero, $produto_numero)=mysql_fetch_row($lista))
       {
           
    include("../global/funcoes_php/foto_ver.php");
      $total_fornece=$total_fornece+$semitotal;
      $texto.= "<tr>
                    <td align=center>$lista_numero</td>
                    <td align=left>$produto_nome</td>                
                    <td align=center>$quantidade_caixa</td>
                     <td align=right>R$ ". number_format($preco_produto/$quantidade_caixa, 2, '.', '')."</td>
                    <td align=right>R$ ". number_format($preco_produto, 2, '.', '')."</td>
                    <td align=center>$quantidade</td>
                    <td align=right>R$ ". number_format($semitotal, 2, '.', '')."</td>
                </tr>
              ";
                        }
      $texto.= "<tr><td align=center colspan=7>
                      Total de pedidos para este fornecedor: R$ ". number_format($total_fornece, 2, '.', '')."
                    </td></tr>";
       }
                    
    require_once("../global/funcoes_php/dompdf/dompdf_config.inc.php");
    $pdf = new DOMPDF();
    $html = iconv("utf-8","iso-8859-1",$texto);
    $pdf->load_html($html);
    $pdf->set_paper('legal', 'landscape');
    $pdf->render();
    $pdf->stream(".pdf/relatorio.pdf");
}
 ?>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...