Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
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), 0, 0, 'L');
  3. $pdf->replace('{identidade}',utf8_decode($data->cliente_identidade), 0, 0, 'L');
  4. $pdf->replace('{telefone}',utf8_decode($data->cliente_telefone), 0, 0, 'L');
  5. $pdf->replace('{nascimento}',DateTime::createFromFormat('Y-m-d', $data->cliente_nascimento)->format( 'd/m/Y' ));
  6. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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. $data = new DateTime($datahora);
  33. $datahora = $data->format('d/m/Y H:i:s');
  34. return $datahora;
  35. }
  36. }
  37. public static function onCompetencia($data)
  38. {
  39. if ($data)
  40. {
  41. $ano = substr($data,0,4);
  42. $mes = substr($data,5,2);
  43. $dia = substr($data,8,2);
  44. return '{$mes}/{$ano}';
  45. }
  46. }
  47. }
  48. ?>


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. // open a transaction with database 'samples'
  5. TTransaction::open('ourorio');
  6. // load all customers
  7. $repository = new TRepository('ComprasSub');
  8. $criteria = new TCriteria;
  9. $ComprasSub = $repository->load($criteria);
  10. setlocale(LC_TIME, 'portuguese');
  11. date_default_timezone_set('America/Sao_Paulo');
  12. $data_atual = strftime("%A, %d de %B de %Y", strtotime(date("Y-m-d")));
  13. $data = $this->form->getData('ComprasSub');
  14. $this->form->validate();
  15. $pdf = new TPDFDesigner;
  16. $pdf->fromXml('app/reports/recibo_compra_cliente.pdf.xml');
  17. // cabeçalho
  18. $pdf->replace('{id_compra}',$data->id_compra);
  19. $pdf->replace('{data_compra}',DateTime::createFromFormat('Y-m-d', $data->data_compra)->format( 'd/m/Y' ));
  20. $pdf->replace('{cliente_txt}',utf8_decode($data->cliente_txt));
  21. $pdf->replace('{endereco_tipo}',utf8_decode($data->cliente_endereco_tipo), 0, 0, 'L');
  22. $pdf->replace('{endereco_numero}',utf8_decode($data->cliente_endereco_numero), 0, 0, 'L');
  23. $pdf->replace('{endereco}',utf8_decode($data->cliente_endereco), 0, 0, 'L');
  24. $pdf->replace('{bairro}',utf8_decode($data->cliente_bairro), 0, 0, 'L');
  25. $pdf->replace('{cpf}',utf8_decode($data->cliente_cpf), 0, 0, 'L');
  26. $pdf->replace('{identidade}',utf8_decode($data->cliente_identidade), 0, 0, 'L');
  27. $pdf->replace('{telefone}',utf8_decode($data->cliente_telefone), 0, 0, 'L');
  28. $pdf->replace('{nascimento}',DateTime::createFromFormat('Y-m-d', $data->cliente_nascimento)->format( 'd/m/Y' ));
  29. $pdf->replace('{cidade}',utf8_decode($data->cliente_cidade), 0, 0, 'L');
  30. $pdf->replace('{estado}',utf8_decode($data->cliente_estado), 0, 0, 'L');
  31. $pdf->replace('{email}',utf8_decode($data->cliente_email), 0, 0, 'L');
  32. $pdf->replace('{vendedor_txt}',utf8_decode($data->vendedor_txt));
  33. $pdf->replace('{loja_txt}',utf8_decode($data->loja_txt));
  34. $pdf->replace('{loja_id}',utf8_decode($data->loja_id));
  35. $pdf->generate();
  36. $fill = TRUE;
  37. // Itens do Pedido
  38. $tot = 0; // acrescentei aqui
  39. foreach ($ComprasSub as $pedido_list)
  40. {
  41. if($pedido_list->compra_id == $data->id_compra) // alterei aqui para testar
  42. {
  43. $pdf->gotoAnchorX('detalhes');
  44. $pdf->Ln(20);
  45. $pdf->Cell(50, 12, number_format((double)$pedido_list->quantidade, 2, ',', '.'), 0, 0, 'R');
  46. $pdf->Cell(25, 12, utf8_decode($pedido_list->unidade), 0, 0, 'R');
  47. $pdf->Cell(100, 12, utf8_decode($pedido_list->descricao), 0, 0, 'L');
  48. $pdf->Cell(180, 12, utf8_decode($pedido_list->kilate_txt), 0, 0, 'R');
  49. $pdf->Cell(80, 12, utf8_decode($pedido_list->tipo_compra_txt), 0, 0, 'L');
  50. $pdf->Cell(75, 12, number_format((double)$pedido_list->valor_unit, 2, ',', '.'), 0, 0, 'R');
  51. $pdf->Cell(70, 12, number_format((double)$pedido_list->subtotal, 2, ',', '.'), 0, 0, 'R');
  52. $tot = $tot + $pedido_list->subtotal; // acrescentei aqui
  53. // grid background
  54. $fill = !$fill;
  55. }
  56. }
  57. $pdf->Ln(4);
  58. $pdf->SetX(18);
  59. $pdf->Cell(570, 14, utf8_decode(""),'B','R', $fill);
  60. $pdf->Ln(20);
  61. $pdf->SetX(50);
  62. $pdf->Cell(530, 14, utf8_decode("Total R$ ". number_format((double)$tot, 2, ',', '.')),0,0,'R'); // acrescentei aqui
  63. $pdf->Ln(50);
  64. $pdf->SetX(18);
  65. $pdf->MultiCell(560, 14, utf8_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).
  66. Respondo sempre e, em quaisquer circunstâncias, pelos termos desta Declaração a qual assino em via única."),0,'J', $fill);
  67. $pdf->Ln(200);
  68. $pdf->SetX(20);
  69. $pdf->Cell(560, 14,$data_atual);
  70. // inicio do rodapé
  71. $pdf->SetY(-25);
  72. $pdf->SetFont('Arial', '', 8);
  73. $pdf->setFontColorRGB( '#000000' );
  74. $pdf->Cell(590, 10, utf8_decode('Pág. ').$pdf->PageNo().' de {nb}',0,0,'R');
  75. $pdf->SetY(-25);
  76. $pdf->Cell(140, 10, utf8_decode('Sistema Gestor OuroRio © '.date("Y"."")),0,0,'R');
  77. $pdf->SetY(-25);
  78. $pdf->Cell(340,10,utf8_decode("Impresso em ".date("d/m/Y H:i:s"."")),0,1,'R');
  79. $pdf->SetY(-25);
  80. $pdf->Cell(460,10,utf8_decode(" Por ".TSession::getValue('username')),0,1,'R'); //nome do usuário
  81. // fim do rodapé
  82. $file="app/output/Recibo - ".$data->loja_txt.".pdf";
  83. if (!file_exists($file) OR is_writable($file))
  84. {
  85. $pdf->save($file);
  86. //Abrir PDF em Janela Modal dentro do Sistema
  87. $window = TWindow::create($data->loja_txt, 0.8, 0.8);
  88. $object = new TElement('object');
  89. $object->data = $file;
  90. $object->type = 'application/pdf';
  91. $object->style = "width: 100%; height:calc(100% - 10px)";
  92. $window->add($object);
  93. $window->show();
  94. }
  95. else
  96. {
  97. throw new Exception(_t('Permission denied') . ': ' . $file);
  98. }
  99. TForm::sendData('form_Compras',$data);
  100. TToast::show('success','RECIBO GERADO COM SUCESSO!', 'top left', 'fas fa-check');
  101. TTransaction::close();
  102. AdiantiCoreApplication::loadPage( 'ComprasListLoja' );
  103. exit;
  104. }
  105. ?>
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), 0, 0, 'L');
  4. ?>
CM

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