Máscaras em PDF Boa noite pessoal. Alguém sabe como criar máscaras em código para PDF no Adianti Studio? Tenho alguns campos que sem a máscara ficam sem nexo. Tipo esses: ...
CM
Máscaras em PDF  
Boa noite pessoal.
Alguém sabe como criar máscaras em código para PDF no Adianti Studio?

Tenho alguns campos que sem a máscara ficam sem nexo.

Tipo esses:
  1. <?php
  2.      $pdf->replace('{cpf}',utf8_decode($data->cliente_cpf), 00'L');
  3.      $pdf->replace('{identidade}',utf8_decode($data->cliente_identidade), 00'L');
  4.      $pdf->replace('{telefone}',utf8_decode($data->cliente_telefone), 00'L');
  5.      $pdf->replace('{nascimento}',DateTime::createFromFormat('Y-m-d'$data->cliente_nascimento)->format'd/m/Y' ));
  6. ?>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (9)


NR

Como referência, veja a função "formatMask" da classe TEntry
HL

Cláudio, boa tarde!

Segue um exemplo de uma classe que criei apenas para a formatação de máscaras.

  1. <?php
  2. class HFormatar extends TPage
  3. {
  4.     public static function onCGC($cgc){
  5.         $cgc preg_replace("/\D/"''$cgc);
  6.         if(strlen($cgc) == 11){
  7.             $cgc preg_replace("/(\d{3})(\d{3})(\d{3})(\d{2})/""\$1.\$2.\$3-\$4"$cgc);
  8.             return $cgc;
  9.         }else{
  10.             if(strlen($cgc) == 14){
  11.                 $cgc preg_replace("/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/""\$1.\$2.\$3/\$4-\$5"$cgc);
  12.                 return $cgc;
  13.             }
  14.         }
  15.     }
  16.     public static function onCEP($cep){
  17.         $cep preg_replace("/^(\d{5})(\d{3})$/""\\1-\\2"$cep);
  18.         return $cep;
  19.     }
  20.     public static function onCelular($celular){
  21.         if(strlen($celular) == 11){
  22.             $celular preg_replace("/(\d{2})(\d{1})(\d{4})(\d{4})/""(\$1) \$2 \$3-\$4"$celular);
  23.         }else{
  24.             if(strlen($celular) == 10){
  25.                 $celular preg_replace("/(\d{2})(\d{4})(\d{4})/""(\$1) \$2-\$3"$celular);
  26.             }
  27.         }
  28.         return $celular;
  29.     }
  30.     public static function onDataHora($datahora){
  31.         if(!empty($datahora)){
  32.             
  33.             $data = new DateTime($datahora);
  34.             $datahora $data->format('d/m/Y H:i:s');
  35.             return $datahora;
  36.         }
  37.         
  38.     }
  39.     public static function onCompetencia($data)
  40.     {
  41.         if ($data)
  42.         {
  43.            
  44.             $ano substr($data,0,4);
  45.             $mes  substr($data,5,2);
  46.             $dia  substr($data,8,2);
  47.             return '{$mes}/{$ano}';
  48.         }
  49.     }
  50. }
  51. ?>


Para utilizar no seu código, só passar:
  1. <?php
  2. $cpf 11111111111;
  3. $cpf HFormatar::onCGC($cpf);
  4. echo $cpf;
  5.  ?>
CM

Nataniel a função FormatMsk eu já uso em vários formulários, o problema está em usar ela na geração de um PDF para tais campos.

Helton, muito interessante sua classe. Já vou guardar e usar.

Consigo usar ela no PDF?

Obrigado a todos.
HL

Claudio, de acordo com o que o Nataniel informou, você pode copiar o código de formatação do FormatMask para a classe HFormatar e usar em qualquer parte do seu código, inclusive em PDF.
CM

Helton como eu havia dito. Já uso nos forms, já tentei usar a mesma função no PDF mas sempre ocorre erro.
HL

Disponibiliza parte do teu código para que possamos analisar melhor.
CM

Boa noite Helton, desculpe a demora.

  1. <?php
  2. public function OnPDF($param)
  3.     {
  4.     
  5.      // open a transaction with database 'samples'
  6.       TTransaction::open('ourorio');
  7.     
  8.      // load all customers
  9.      $repository = new TRepository('ComprasSub');
  10.      $criteria = new TCriteria;
  11.      $ComprasSub $repository->load($criteria);
  12.      setlocale(LC_TIME'portuguese');
  13.      date_default_timezone_set('America/Sao_Paulo');
  14.      $data_atual strftime("%A, %d de %B de %Y"strtotime(date("Y-m-d")));
  15.      
  16.      $data $this->form->getData('ComprasSub');
  17.      $this->form->validate();
  18.      $pdf = new TPDFDesigner;
  19.      $pdf->fromXml('app/reports/recibo_compra_cliente.pdf.xml');
  20.    
  21.    // cabeçalho
  22.      $pdf->replace('{id_compra}',$data->id_compra);
  23.      $pdf->replace('{data_compra}',DateTime::createFromFormat('Y-m-d'$data->data_compra)->format'd/m/Y' ));
  24.      $pdf->replace('{cliente_txt}',utf8_decode($data->cliente_txt));
  25.      $pdf->replace('{endereco_tipo}',utf8_decode($data->cliente_endereco_tipo), 00'L');
  26.      $pdf->replace('{endereco_numero}',utf8_decode($data->cliente_endereco_numero), 00'L');
  27.      $pdf->replace('{endereco}',utf8_decode($data->cliente_endereco), 00'L');
  28.      $pdf->replace('{bairro}',utf8_decode($data->cliente_bairro), 00'L');
  29.   
  30.      $pdf->replace('{cpf}',utf8_decode($data->cliente_cpf), 00'L');
  31.      $pdf->replace('{identidade}',utf8_decode($data->cliente_identidade), 00'L');
  32.      $pdf->replace('{telefone}',utf8_decode($data->cliente_telefone), 00'L');
  33.      $pdf->replace('{nascimento}',DateTime::createFromFormat('Y-m-d'$data->cliente_nascimento)->format'd/m/Y' ));
  34.      $pdf->replace('{cidade}',utf8_decode($data->cliente_cidade), 00'L');
  35.      $pdf->replace('{estado}',utf8_decode($data->cliente_estado), 00'L');
  36.      $pdf->replace('{email}',utf8_decode($data->cliente_email), 00'L');
  37.    
  38.      $pdf->replace('{vendedor_txt}',utf8_decode($data->vendedor_txt));
  39.      $pdf->replace('{loja_txt}',utf8_decode($data->loja_txt));
  40.      $pdf->replace('{loja_id}',utf8_decode($data->loja_id));
  41.     
  42.      $pdf->generate();
  43.      $fill TRUE
  44.      // Itens do Pedido
  45.              $tot 0;  // acrescentei aqui
  46.              
  47.              
  48.              foreach ($ComprasSub as $pedido_list)
  49.                  {
  50.                  if($pedido_list->compra_id == $data->id_compra)  // alterei aqui para testar
  51.                  {
  52.                     $pdf->gotoAnchorX('detalhes');
  53.                     $pdf->Ln(20);
  54.                     $pdf->Cell(5012number_format((double)$pedido_list->quantidade2',''.'), 00'R');
  55.                     $pdf->Cell(2512utf8_decode($pedido_list->unidade), 00'R');
  56.                     $pdf->Cell(10012utf8_decode($pedido_list->descricao), 00'L');
  57.                     $pdf->Cell(18012utf8_decode($pedido_list->kilate_txt), 00'R');
  58.                     $pdf->Cell(8012utf8_decode($pedido_list->tipo_compra_txt), 00'L');
  59.                     $pdf->Cell(7512number_format((double)$pedido_list->valor_unit2',''.'), 00'R');
  60.                     $pdf->Cell(7012number_format((double)$pedido_list->subtotal2',''.'), 00'R');
  61.                     
  62.                     $tot $tot $pedido_list->subtotal;  // acrescentei aqui
  63.                     
  64.                     // grid background
  65.                     $fill = !$fill;
  66.                }
  67.             }      
  68.     
  69.      $pdf->Ln(4);
  70.      $pdf->SetX(18); 
  71.      $pdf->Cell(57014utf8_decode(""),'B','R'$fill);
  72.        
  73.      $pdf->Ln(20);
  74.      $pdf->SetX(50);
  75.      $pdf->Cell(53014utf8_decode("Total R$ "number_format((double)$tot2',''.')),0,0,'R');   // acrescentei aqui
  76.      
  77.      $pdf->Ln(50);
  78.      $pdf->SetX(18); 
  79.      $pdf->MultiCell(56014utf8_decode("      Eu, ".$data->cliente_txt", declaro, para todos os fins, de direito e sob as penas da Lei 12.683 de 9 de julho de 2012 e  artigos 155, 156 e 157 todos do Código Penal Brasileiro, em todas as esferas, em juízo ou fora dele, ser o(a) legítimo(a) Proprietário(a) do(s) objeto(s) e/ou ouro velho que, no presente ato vendo a OuroRio Quiosques & Comércio de Metais Ltda, declarando ainda que não transfiro em caráter absoluto nenhuma de minhas responsabilidades a referida empresa quanto a procedência, descrição e autenticidade do(s) objeto(s) e/ou ouro velho o(s) qual(is) foi(ram) por mim legalmente adquirido(s) e está(ão) livre(s) e desembaraçada(s) de quaisquer ônus ou pendência(s).
  80.       Respondo sempre e, em quaisquer circunstâncias, pelos termos desta Declaração a qual assino em via única."),0,'J'$fill);
  81.      
  82.      $pdf->Ln(200);
  83.      $pdf->SetX(20);
  84.      $pdf->Cell(56014,$data_atual);  
  85.      
  86.    
  87.     // inicio do rodapé
  88.      $pdf->SetY(-25);
  89.      $pdf->SetFont('Arial'''8);
  90.      $pdf->setFontColorRGB'#000000' );
  91.      $pdf->Cell(59010utf8_decode('Pág. ').$pdf->PageNo().' de {nb}',0,0,'R');
  92.      $pdf->SetY(-25);
  93.      $pdf->Cell(14010utf8_decode('Sistema Gestor OuroRio © '.date("Y"."")),0,0,'R');
  94.      $pdf->SetY(-25);
  95.      $pdf->Cell(340,10,utf8_decode("Impresso em ".date("d/m/Y H:i:s"."")),0,1,'R');
  96.      $pdf->SetY(-25);
  97.      $pdf->Cell(460,10,utf8_decode(" Por ".TSession::getValue('username')),0,1,'R'); //nome do usuário 
  98.      // fim do rodapé
  99.     
  100.    
  101.      $file="app/output/Recibo - ".$data->loja_txt.".pdf"
  102.     
  103.      if (!file_exists($file) OR is_writable($file))
  104.      {
  105.      $pdf->save($file);
  106.    
  107.      //Abrir PDF em Janela Modal dentro do Sistema
  108.      $window TWindow::create($data->loja_txt0.80.8);
  109.                 $object = new TElement('object');
  110.                 $object->data  $file;
  111.                 $object->type  'application/pdf';
  112.                 $object->style "width: 100%; height:calc(100% - 10px)";
  113.                 $window->add($object);
  114.                 $window->show();
  115.                 
  116.      }
  117.      else
  118.      {
  119.      throw new Exception(_t('Permission denied') . ': ' $file);
  120.      } 
  121.     
  122.      TForm::sendData('form_Compras',$data);
  123.      TToast::show('success','RECIBO GERADO COM SUCESSO!''top left''fas fa-check');
  124.      TTransaction::close();
  125.      AdiantiCoreApplication::loadPage'ComprasListLoja' );
  126.      exit;
  127.     
  128.   
  129.      }
  130. ?>
HL

Claudio, no exemplo que te dei, tu pode fazer dessa forma ai.

  1. <?php
  2. $data->cliente_cpf HFormatar::onCGC($data->cliente_cpf);
  3. $pdf->replace('{cpf}',utf8_decode($data->cliente_cpf), 00'L');
  4. ?>
CM

Beleza Helton.
Vou fazer amanhã e te aviso se deu certo.
Obrigado pela força irmão