Jump to content
Fórum Script Brasil
  • 0

Paginaçao em pdf


Carlos Rocha

Question

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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...