Erro ao exportar para PDF Estou precisando exportar uma página para PDF. Na tela ela aparece e quando mando exportar ela da um warning e não exporta nada. Já tenho algo parecido em outra parte do código (com menos conteúdo) e a exportação funciona bem. Alguma dica? ...
TB
Erro ao exportar para PDF  
Estou precisando exportar uma página para PDF.
Na tela ela aparece e quando mando exportar ela da um warning e não exporta nada.
Já tenho algo parecido em outra parte do código (com menos conteúdo) e a exportação funciona bem.
Alguma dica?

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


HL

Tales, compartilha o código que faz essa chamada.
AC

Veja aqui esse exemplo:

www.adianti.com.br/framework_files/tutor/index.php?class=DocumentHtm
TB

O código é esse

<php>
 
  1. <?php
  2. /**
  3. * ImprimeQuestoesFormView Form
  4. * @author <your name here>
  5. */
  6. class ImprimeQuestoesFormView extends TPage
  7. {
  8. /**
  9. * Form constructor
  10. * @param $param Request
  11. */
  12. protected $skey = "code
  13. protected $ciphering = "cipe";
  14. protected $encryption_iv = 'keyenc';
  15. use Adianti\Base\AdiantiStandardFormTrait; // Standard form methods
  16. public function __construct( $param )
  17. {
  18. parent::__construct();
  19. $this->form = new BootstrapFormBuilder('form_ImprimeQuestoes_View');
  20. TTransaction::open('ppconnectpolo');
  21. $prova_feita = new ProvasFeitas($param['prova_id']);
  22. $questoes_imprimir = ImprimeQuestoes::where('pg_id','=',$prova_feita->provas_geradas_id)->load();
  23. TTransaction::close();
  24. $this->form->setFormTitle('Imprimir');
  25. $this->form->setColumnClasses(2, ['col-sm-3', 'col-sm-9']);
  26. $this->form->addHeaderActionLink( _t('Print'), new TAction([$this, 'onPrint'], ['key'=>$param['prova_id'], 'static' => '1']), 'far:file-pdf red');
  27. // vertical box container
  28. $container = new TVBox;
  29. $container->style = 'width: 100%';
  30. $container->add($this->form);
  31. parent::add($container);
  32. }
  33. /**
  34. * Show data
  35. */
  36. public function onEdit( $param )
  37. {
  38. try
  39. {
  40. TTransaction::open('ppconnectpolo');
  41. $prova_feita = new ProvasFeitas($param['prova_id']);
  42. $questoes_imprimir = ImprimeQuestoes::where('pg_id','=',$prova_feita->provas_geradas_id)->load();
  43. $n_questao=1;
  44. foreach($questoes_imprimir as $imprime){
  45. $object = new Questoes($imprime->questao_id);
  46. $questao_pg = new QuestoesDasProvasGeradas($imprime->questapg_id);
  47. $idv='Id'.$n_questao;
  48. $n_questao++;
  49. $label_id = new THidden($idv);
  50. $this->form->addFields([$label_id]);
  51. $table = new TTable;
  52. $enunciado = new TLabel('enunciado');
  53. $enunciado = ($n_questao-1) . ') ' . $this->decode($object->texto);
  54. $enunciado = $table->addRow()->addCell('<br><hr/><br>'.$enunciado);
  55. $this->form->add($table);
  56. $table_midia = new TTable;
  57. if($object->imagem!=null || $object->audio!=null || $object->video!=null){
  58. $row = $table_midia->addRow();
  59. if($object->imagem!=null) {
  60. $img = new TImage($object->imagem);
  61. $img->width= '320px';
  62. $cell = $row->addCell($img);
  63. }
  64. if($object->audio!=null) {
  65. $cell = $row->addCell('<td>Resposta com Audio</td>');
  66. }
  67. if($object->video!=null) {
  68. $cell = $row->addCell('<td>Resposta com Vídeo</td>' );
  69. }
  70. }
  71. $table->addRow()->addCell($table_midia);
  72. $table_alternativas = new TTable;
  73. if($object->questoes_tipos_id == 2 ){ // multipla escolha
  74. $items_alternativas = [];
  75. if(!empty($questao_pg->a_alternativas_id)){
  76. $alt_a = QuestoesAlternativas::where('id','=',$questao_pg->a_alternativas_id)->load();
  77. if($alt_a!=null){
  78. $items_alternativas['A'] = $this->decode($alt_a[0]->texto);
  79. }
  80. }
  81. if(!empty($questao_pg->b_alternativas_id)){
  82. $alt_b = QuestoesAlternativas::where('id','=',$questao_pg->b_alternativas_id)->load();
  83. if($alt_b!=null){
  84. $items_alternativas['B'] = $this->decode($alt_b[0]->texto);
  85. }
  86. }
  87. if(!empty($questao_pg->c_alternativas_id)){
  88. $alt_c = QuestoesAlternativas::where('id','=',$questao_pg->c_alternativas_id)->load();
  89. if($alt_c!=null){
  90. $items_alternativas['C'] = $this->decode($alt_c[0]->texto);
  91. }
  92. }
  93. if(!empty($questao_pg->d_alternativas_id)){
  94. $alt_d = QuestoesAlternativas::where('id','=',$questao_pg->d_alternativas_id)->load();
  95. if($alt_d!=null){
  96. $items_alternativas['D'] = $this->decode($alt_d[0]->texto);
  97. }
  98. }
  99. if(!empty($questao_pg->e_alternativas_id)){
  100. $alt_e = QuestoesAlternativas::where('id','=',$questao_pg->e_alternativas_id)->load();
  101. if($alt_e!=null){
  102. $items_alternativas['E'] = $this->decode($alt_e[0]->texto);
  103. }
  104. }
  105. $letra = ['A', 'B', 'C', 'D', 'E'];
  106. $pletra=0;
  107. foreach($items_alternativas as $alternativa){
  108. $row1 = $table_alternativas->addRow();
  109. $linha = new TLabel($letra[$pletra]);
  110. if ($letra[$pletra]==$questao_pg->resposta_letra) { // assinalada
  111. $linha->setValue('<b>X ) '. $alternativa. '</b>');
  112. } else {
  113. $linha->setValue($letra[$pletra] .') '. $alternativa);
  114. }
  115. $pletra++;
  116. $row1->addCell($linha);
  117. }
  118. $linha_alternativas = $table->addRow();
  119. $linha_alternativas->addCell($table_alternativas);
  120. }
  121. $table_vf = new TTable;
  122. if($object->questoes_tipos_id == 4 ){ // VF
  123. $linha = new TLabel( $object->vf == 'V' ? 'Verdadeiro' : 'Falso' );
  124. $linha->setFontColor('#FF0000');
  125. $row = $table_vf->addRow();
  126. $row->addCell($linha);
  127. }
  128. $linha_vf = $table->addRow();
  129. $linha_vf->addCell($table_vf);
  130. $table_texto = new TTable;
  131. if($object->questoes_tipos_id == 1 || $object->questoes_tipos_id == 3){ // dissertativa ou discursiva
  132. $linha = new TLabel('<b>'.$questao_pg->resposta_texto.'</b>');
  133. $row = $table_texto->addRow();
  134. $row->addCell($linha);
  135. }
  136. $linha_texto = $table->addRow();
  137. $linha_texto->addCell($table_texto);
  138. }
  139. TTransaction::close();
  140. }
  141. catch (Exception $e)
  142. {
  143. new TMessage('error', $e->getMessage());
  144. }
  145. }
  146. /**
  147. * Print view
  148. */
  149. public function onPrint($param)
  150. {
  151. try
  152. {
  153. $this->onEdit($param);
  154. // string with HTML contents
  155. $html = clone $this->form;
  156. $contents = file_get_contents('app/resources/styles-print.html') . $html->getContents();
  157. // converts the HTML template into PDF
  158. $dompdf = new \Dompdf\Dompdf();
  159. $dompdf->loadHtml($contents);
  160. $dompdf->setPaper('A4', 'portrait');
  161. $dompdf->render();
  162. $file = 'app/output/ImprimeQuestoes-export.pdf';
  163. // write and open file
  164. file_put_contents($file, $dompdf->output());
  165. $window = TWindow::create('Export', 0.8, 0.8);
  166. $object = new TElement('object');
  167. $object->data = $file.'?rndval='.uniqid();
  168. $object->type = 'application/pdf';
  169. $object->style = "width: 100%; height:calc(100% - 10px)";
  170. $window->add($object);
  171. $window->show();
  172. }
  173. catch (Exception $e)
  174. {
  175. new TMessage('error', $e->getMessage());
  176. }
  177. }
  178. public function encode($value){
  179. if(!$value){return false;}
  180. $encryption = openssl_encrypt($value, $this->ciphering, $this->skey, 0, $this->encryption_iv);
  181. return $encryption;
  182. }
  183. public function decode($value){
  184. if(!$value){return false;}
  185. $text = openssl_decrypt ($value, $this->ciphering, $this->skey, 0, $this->encryption_iv);
  186. return trim($text);
  187. }
  188. }
  189. </php></your>
HL

Talvez o problema esteja ocorrendo porque no método construtor esteja sendo adicionado um BootstrapFormBuilder e dentro do formulário não tenha sido adicionado nenhum "campo", como um TEntry ou outros.

Verifica adicionar um:

$entry = new TEntry('entry ').

$this->form->addFields([$entry]);

TB

Resolvido... o problema estava na chamada do método que impressão que estava indo sem valor para o KEY.
Criei uma variável de sessão quando abre o form e mandei essa variável para o onPrint.