Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Data atual em relatório PDF Bom dia, Estou tentando adicionar a data atual com javascript em um relatório PDF usando uma função onPrint que gera o documento PDF apartir de um html, porém, a data não é visualizada no PDF depois que ele é gerado. Alguem pode me ajudar? segue código: ...
ET
Data atual em relatório PDF  
Bom dia,

Estou tentando adicionar a data atual com javascript em um relatório PDF usando uma função onPrint que gera o documento PDF apartir de um html, porém, a data não é visualizada no PDF depois que ele é gerado. Alguem pode me ajudar?

segue código:

  1. <?php
  2. /**
  3.  * CidadeFormView Form
  4.  * @author  <your name here>
  5.  */
  6. class CidadeFormView extends TPage
  7. {
  8.     protected $form// form
  9.     
  10.     /**
  11.      * Form constructor
  12.      * @param $param Request
  13.      */
  14.     public function __construct$param )
  15.     {
  16.         parent::__construct();
  17.         TTransaction::open('microerp');
  18.         $this->form = new BootstrapFormBuilder('form_Cidade');
  19.         $this->form->setFormTitle('Cidade');
  20.         $label1 = new TLabel('Id:''#333333''12px''');
  21.         $label2 = new TLabel('Cidade:''#333333''12px''');
  22.         $label3 = new TLabel('UF:''#333333''12px''');
  23.         $label4 = new TLabel('Bairro:''#333333''12px''');
  24.         
  25.         $cidade = new Cidade($param['key']);
  26.         
  27.         $text1  = new TTextDisplay($cidade->id'#333333''12px''');
  28.         $text2  = new TTextDisplay($cidade->nome'#333333''12px''');
  29.         $text3  = new TTextDisplay($cidade->uf'#333333''12px''');
  30.         $text4  = new TTextDisplay($cidade->bairro'#333333''12px''');
  31.         $this->form->addFields([$label1],[$text1]);
  32.         $this->form->addFields([$label2],[$text2]);
  33.         $this->form->addFields([$label3],[$text3]);
  34.         $this->form->addFields([$label4],[$text4]);
  35.         $this->form->addHeaderAction('Imprimir', new TAction(['CidadeFormView''onPrint'],['key'=>$cidade->id]), 'fa:file-pdf-o red');
  36.          // vertical box container
  37.          $container = new TVBox;
  38.          $container->style 'width: 100%';
  39.          $container->class 'formView-container'
  40.          $container->add(new TXMLBreadCrumb('menu.xml''CidadeList'));
  41.          $container->add($this->form);
  42.  
  43.          TTransaction::close();
  44.  
  45.          parent::add($container);
  46.     }
  47.     /**
  48.      * Imprime o cidade
  49.      */
  50.     public function onPrint($param)
  51.     {
  52.         try
  53.         {
  54.             TTransaction::open('microerp');
  55.             
  56.             $object Cidade::find($param['key']);
  57.             
  58.             if ($object)
  59.             {
  60.                 $html = new AdiantiHTMLDocumentParser('app/documents/CidadeDocument.html''A4''portrait');
  61.                 $html->setMaster($object);
  62.     
  63.                 $html->process();
  64.                 $output $html->getContents();
  65.                 
  66.                 $document 'tmp/'.uniqid().'.pdf'
  67.                 $html AdiantiHTMLDocumentParser::newFromString($output);
  68.                 $html->saveAsPDF($document);
  69.                 
  70.                 parent::openFile($document);
  71.                 new TMessage('info'_t('Document successfully generated'));
  72.             }
  73.             
  74.             TTransaction::close();
  75.         }
  76.         catch (Exception $e)
  77.         {
  78.             throw new Exception($e->getMessage());
  79.         }
  80.     }
  81.     public function onShow()
  82.     {      
  83.     } 
  84. }
  85. //Arquivo HTML de onde saem as informações para gerar o PDF
  86. <br>
  87. <br>
  88. <p>Data: <span id="datetime"></span></p>
  89. <script>
  90. var dt = new Date();
  91. document.getElementById("datetime").innerHTML = (("0"+dt.getDate()).slice(-2)) +"."+ (("0"+(dt.getMonth()+1)).slice(-2)) +"."+ (dt.getFullYear()) +" "+ (("0"+dt.getHours()).slice(-2)) +":"+ (("0"+dt.getMinutes()).slice(-2));
  92. </script>
  93. <table class="mce-table" style="border-collapse: collapse; border: 1px solid black; height: 118px;" border="1" width="930" cellspacing="0" cellpadding="5">
  94.    <tbody>
  95.       <tr>
  96.          <td style="width: 411px; text-align: center" colspan="2"><strong>Ficha de cadastro de endereço</strong></td>
  97.       </tr>
  98.       <tr>
  99.          <td style="width: 411px; text-align: left" colspan="2">
  100.          Código: {$id}
  101.          <br><br>Cidade: {$nome}
  102.          <br><br>UF: {$uf}
  103.          <br><br>Bairro: {$bairro}
  104.       </td>
  105.       </tr>
  106.    </tbody>
  107. </table>

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 (7)


PC

  1. <?php
  2.          $nome_campo->setValue(date("d/m/Y"));
  3. ?>
PC

Erikson. fica melhor assim, busca data atual e não deixa editá-la.
  1. <?php
  2.         
  3.         $nome_campo->setValue(date("d/m/Y"));
  4.         $nome_campo->setEditable(FALSE);
  5. ?>
ET

O brigado pela ajuda Pedro Celso, mas preciso exibir a data em uma tag <p> ou dentro de uma tabela html. O pdf é gerado a partir de uma view html e não de um form.
</p>
NR

Você pode criar uma variável no html({$dt_atual}, por exemplo) e adicionar um atributo com o mesmo nome em $object contendo a data atual.
ET

Nataniel, não entendi muito bem como isso funcionaria, você teria um trecho de código para eu dar uma olhada? Desde já agradeço a atenção.
NR

Criar atributo no objeto enviado para a função setMaster:
  1. <?php
  2. $object->dt_atual date('d/m/Y');
  3. $html->setMaster($object);
  4. ?>

Criar variável no html para substituição:
  1. <?php
  2. <p>Data: {$dt_atual}</p>
  3. ?>
ET

Ok, deu certo Nataniel. Muito obrigado.