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:
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:
- <?php
- /**
- * CidadeFormView Form
- * @author <your name here>
- */
- class CidadeFormView extends TPage
- {
- protected $form; // form
- /**
- * Form constructor
- * @param $param Request
- */
- public function __construct( $param )
- {
- parent::__construct();
- TTransaction::open('microerp');
- $this->form = new BootstrapFormBuilder('form_Cidade');
- $this->form->setFormTitle('Cidade');
- $label1 = new TLabel('Id:', '#333333', '12px', '');
- $label2 = new TLabel('Cidade:', '#333333', '12px', '');
- $label3 = new TLabel('UF:', '#333333', '12px', '');
- $label4 = new TLabel('Bairro:', '#333333', '12px', '');
- $cidade = new Cidade($param['key']);
- $text1 = new TTextDisplay($cidade->id, '#333333', '12px', '');
- $text2 = new TTextDisplay($cidade->nome, '#333333', '12px', '');
- $text3 = new TTextDisplay($cidade->uf, '#333333', '12px', '');
- $text4 = new TTextDisplay($cidade->bairro, '#333333', '12px', '');
- $this->form->addFields([$label1],[$text1]);
- $this->form->addFields([$label2],[$text2]);
- $this->form->addFields([$label3],[$text3]);
- $this->form->addFields([$label4],[$text4]);
- $this->form->addHeaderAction('Imprimir', new TAction(['CidadeFormView', 'onPrint'],['key'=>$cidade->id]), 'fa:file-pdf-o red');
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 100%';
- $container->class = 'formView-container';
- $container->add(new TXMLBreadCrumb('menu.xml', 'CidadeList'));
- $container->add($this->form);
- TTransaction::close();
- parent::add($container);
- }
- /**
- * Imprime o cidade
- */
- public function onPrint($param)
- {
- try
- {
- TTransaction::open('microerp');
- $object = Cidade::find($param['key']);
- if ($object)
- {
- $html = new AdiantiHTMLDocumentParser('app/documents/CidadeDocument.html', 'A4', 'portrait');
- $html->setMaster($object);
- $html->process();
- $output = $html->getContents();
- $document = 'tmp/'.uniqid().'.pdf';
- $html = AdiantiHTMLDocumentParser::newFromString($output);
- $html->saveAsPDF($document);
- parent::openFile($document);
- new TMessage('info', _t('Document successfully generated'));
- }
- TTransaction::close();
- }
- catch (Exception $e)
- {
- throw new Exception($e->getMessage());
- }
- }
- public function onShow()
- {
- }
- }
- //Arquivo HTML de onde saem as informações para gerar o PDF
- <br>
- <br>
- <p>Data: <span id="datetime"></span></p>
- <script>
- var dt = new Date();
- 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));
- </script>
- <table class="mce-table" style="border-collapse: collapse; border: 1px solid black; height: 118px;" border="1" width="930" cellspacing="0" cellpadding="5">
- <tbody>
- <tr>
- <td style="width: 411px; text-align: center" colspan="2"><strong>Ficha de cadastro de endereço</strong></td>
- </tr>
- <tr>
- <td style="width: 411px; text-align: left" colspan="2">
- Código: {$id}
- <br><br>Cidade: {$nome}
- <br><br>UF: {$uf}
- <br><br>Bairro: {$bairro}
- </td>
- </tr>
- </tbody>
- </table>
Erikson. fica melhor assim, busca data atual e não deixa editá-la.
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>
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.
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.
Criar atributo no objeto enviado para a função setMaster:
Criar variável no html para substituição:
Ok, deu certo Nataniel. Muito obrigado.