Lançado Adianti Framework 7.6!
Clique aqui para saber mais
PDF é gerado com erro só em ambiente de produção Quando gero o PDF em "localhost" tudo funciona bem contudo ao "subir" para o servidor os dados do cliente não são preenchidos. Já verifiquei e os dados são obtidos das tabelas corretamente ,,, alguém já passou por algo assim ? ...
EA
PDF é gerado com erro só em ambiente de produção  
Quando gero o PDF em "localhost" tudo funciona bem contudo ao "subir" para o servidor os dados do cliente não são preenchidos.
Já verifiquei e os dados são obtidos das tabelas corretamente ,,, alguém já passou por algo assim ?

  1. <?php
  2.             // replace the main section variables
  3.             $html->enableSection('main'$venda->toArray());
  4.                          
  5.             // replace the product section variables
  6.             $html->enableSection('cliente'$cliente->toArray());
  7.                          
  8.             // replace the product section variables
  9.             $html->enableSection('itens'$replacesTRUE);
  10.             
  11.             $contents $html->getContents();
  12.             
  13.             // converts the HTML template into PDF
  14.             $dompdf = new \Dompdf\Dompdf();
  15.             $dompdf->loadHtml($contents);
  16.             $dompdf->setPaper('A4''portrait');
  17.             $dompdf->render();
  18.             
  19.             // write and open file
  20.             file_put_contents('app/output/document.pdf'$dompdf->output());
  21.             
  22.             // open window to show pdf
  23.             $window TWindow::create(('Venda'), 0.80.8);
  24.             $object = new TElement('object');
  25.             $object->data  'app/output/document.pdf';
  26.             $object->type  'application/pdf';
  27.             $object->style "width: 100%; height:calc(100% - 10px)";
  28.             $window->add($object);
  29.             $window->show();
  30. ?>

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)


MC

Eli, talvez não seja o mesmo problema que eu encontrei, porem não custa compartilhar, talvez ajude...

criei uma extensão para que cada momento que eu gere a informação (relatório), sempre crie um novo arquivo.
no ambiente local estava correto, levando para o ambiente produção (LINUX) não rodava de maneira alguma.

no caso que eu fiz, logicamente vou encontrar problemas com excesso de arquivos na pasta output, porem resolveu meu caso


  1. <?php
  2.                         $extensao date('Y') . date('m') . date('d') . '-' date('H') . date('i') . date('s');
  3.             $arquivo 'app/output/' $model '-' $extensao '.pdf';   
  4.             $file $arquivo;
  5.             if (!file_exists($file) OR is_writable($file))
  6.             {
  7.                 $designer->save($file);
  8.                 //parent::openFile($file);
  9.                 $window TWindow::create($titulo0.80.9);
  10.                 $object = new TElement('object');
  11.                 $object->data  $file;
  12.                 $object->type  'application/pdf';
  13.                 $object->style "width: 100%; height:calc(100% - 10px)";
  14.                 $window->add($object);
  15.                 $window->show();
  16.             }
  17. ?>


MC

só complementando, pelo que vi, o linux mantem no browser os últimos dados se caso o relatório for similar (nomes, etc) e não sobrepõe

talvez seja caso de permissão, também mudei ate para 777 e mesmo assim não funcionou....

da forma que esta acima resolveu o problema, talvez alguém tenha uma alternativa mais interessante....

EA

Agradeço muito compartilhar sua experiência para me auxiliar Marcelo. Não descrevi corretamente o erro ... o arquivo é gerado contudo as informações do cliente não são substituídas no 'template' quando no ambiente de produção (hospedagem na LocaWeb) enquanto as demais sim (dados da venda e produtos correspondentes) . O problema ocorre na linha 6 do código que postei (
  1. <?php $html->enableSection('cliente'$cliente->toArray());?>
)
LA

ola Eli

mas como criou esse objeto $cliente ??
No ambiente Linux não existe tanto faz maiusc. ou minusc.

e no html existe os <!--[cliente]--> ... <!--[/cliente]-->
EA

Sim Luís, tenho o cuidado de observar a exatidão na nomenclatura utilizada. Abaixo está parte do código HTML utilizado no template. Como mencionei em localhost tudo funciona já na hospedagem os dados da venda e dos produtos são substituídos pelos dados das tabelas correspondentes corretamente mas os do cliente não. Testei criando uma variável para receber o conteúdo do método $cliente->toArray() de forma a poder verificar se continha os dados no formato correto apesar de, como já informei, em localhost funcionar normalmente. Utilizei dita variável para passagem dos dados ao template mas foi em vão ... o problema persiste.

<!--[cliente]--> <h2>Cliente</h2> <hr> <table style="width:100%"> <tr> <td> <strong>Documento: </strong> </td> <td> {$documento} </td> <td> <strong>Nome: </strong> </td> <td colspan="9"> {$nome} </td> </tr> <tr> <td> <strong>Email: </strong> </td> <td colspan="6"> {$email} </td> <td> <strong>Telefone: </strong> </td> <td colspan="4"> {$telefone} </td> </tr> <tr> <td> <strong>Logradouro: </strong> </td> <td colspan="6"> {$logradouro} </td> <td> <strong>Número: </strong> </td> <td> {$numero} </td> <td> <strong>CEP: </strong> </td> <td colspan="2"> {$cep} </td> </tr> <tr> <td> <strong>Complemento: </strong> </td> <td colspan="6"> {$complemento} </td> <td> <strong>UF: </strong> </td> <td> {$uf} </td> <td> <strong>País: </strong> </td> <td> {$pais} </td> </tr> <tr> <td> <strong>Bairro: </strong> </td> <td colspan="5"> {$bairro} </td> <td> <strong>Cidade: </strong> </td> <td colspan="5"> {$cidade} </td> </tr> </table> <!--[/cliente]-->
EA

  1. <?php
  2.     <!--[cliente]-->
  3.     <h2>Cliente</h2
  4.     <hr>
  5.     <table style="width:100%">
  6.         <tr>
  7.             <td> <strong>Documento: </strong> </td> <td> {$documento} </td
  8.             <td> <strong>Nome: </strong> </td> <td colspan="9"> {$nome} </td>
  9.         </tr>
  10.         <tr>
  11.             <td> <strong>Email: </strong> </td> <td colspan="6"> {$email} </td>
  12.             <td> <strong>Telefone: </strong> </td> <td colspan="4"> {$telefone} </td>
  13.         </tr>
  14.         <tr>
  15.             <td> <strong>Logradouro: </strong> </td> <td colspan="6"> {$logradouro} </td>
  16.             <td> <strong>Número: </strong> </td> <td> {$numero} </td>
  17.             <td> <strong>CEP: </strong> </td> <td colspan="2"> {$cep} </td>
  18.         </tr>
  19.         <tr>
  20.             <td> <strong>Complemento: </strong> </td> <td colspan="6"> {$complemento} </td>
  21.             <td> <strong>UF: </strong> </td> <td> {$uf} </td>
  22.             <td> <strong>País: </strong> </td> <td> {$pais} </td>
  23.         </tr>
  24.         <tr>
  25.             <td> <strong>Bairro: </strong> </td> <td colspan="5"> {$bairro} </td>
  26.             <td> <strong>Cidade: </strong> </td> <td colspan="5"> {$cidade} </td>
  27.         </tr>
  28.     </table>
  29.     <br>
  30.     <!--[/cliente]-->
  31. ?>
LA

faço assim:

  1. <?php
  2.         $this->html = new THtmlRenderer('app/resources/relats/cliente.html');
  3.         try {
  4.             TTransaction::open('pgsql');
  5.             $cliente = new Clientes($param['id_cliente']);
  6.             //Vazios
  7.             $object = new stdClass;
  8.             $arrayDados = array();
  9.             //Dados
  10.             $object->nome trim($cliente->nome);
  11.             $arrayDados['dados'] = $object;
  12.             $this->html->enableSection('main'$arrayDados);
  13.             $this->html->disableHtmlConversion();
  14.             $contents $this->html->getContents();
  15.             //...
  16.             TTransaction::close();
  17.         } catch (Exception $e) {
  18.             new TMessage('error'$e->getMessage());
  19.         }
  20.         // ------ No html
  21.         /*
  22.           <!--[main]-->
  23.           <p>{$dados->nome}</p>
  24.           <!--[/main]-->
  25.          */
  26. ?>