Gerando mais páginas com TPDFDesigner Seguidamente tem perguntas no fórum sobre como gerar mais páginas com um TPDFDesigner. Procurei alterar esse exemplo que vem junto com o tutor: http://www.adianti.com.br/framework_files/tutor/index.php?class=PDFDesignShapesView para gerar mais uma página. Segue o código-fonte integral. Basta usarmos o método generate(), ele já abre uma página nova, renderiza os elementos desenhados. Apó...
PD
Gerando mais páginas com TPDFDesigner  
Fechado
Seguidamente tem perguntas no fórum sobre como gerar mais páginas com um TPDFDesigner. Procurei alterar esse exemplo que vem junto com o tutor: www.adianti.com.br/framework_files/tutor/index.php?class=PDFDesignSh para gerar mais uma página.

Segue o código-fonte integral. Basta usarmos o método generate(), ele já abre uma página nova, renderiza os elementos desenhados. Após isso, basta adicionarmos os elementos dinâmicos novamente (gotoAnchorXY, Write, etc):

 
  1. <?php
  2. class PDFDesignShapesView extends TPage
  3. {
  4. private $form; // form
  5. /**
  6. * Class constructor
  7. */
  8. function __construct()
  9. {
  10. parent::__construct();
  11. // creates the form
  12. $this->form = new TForm('form_pdf_shapes');
  13. // creates a table
  14. $table = new TTable;
  15. // add the table inside the form
  16. $this->form->add($table);
  17. // create the form fields
  18. $name = new TEntry('name');
  19. $name->addValidation( 'Name', new TRequiredValidator );
  20. $label = new TLabel('Name' . ': ');
  21. $label->setFontColor('red');
  22. $table->addRowSet($label, $name);
  23. $save_button=new TButton('generate');
  24. $save_button->setAction(new TAction(array($this, 'onGenerate')), 'Generate');
  25. $save_button->setImage('ico_save.png');
  26. // add a row for the form action
  27. $table->addRowSet($save_button);
  28. // define wich are the form fields
  29. $this->form->setFields(array($name,$save_button));
  30. // wrap the page content using vertical box
  31. $vbox = new TVBox;
  32. $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  33. $vbox->add($this->form);
  34. parent::add($vbox);
  35. }
  36. /**
  37. * method onGenerate()
  38. * Executed whenever the user clicks at the generate button
  39. */
  40. function onGenerate()
  41. {
  42. try
  43. {
  44. $data = $this->form->getData();
  45. $this->form->validate();
  46. $designer = new TPDFDesigner;
  47. $designer->fromXml('app/reports/forms.pdf.xml');
  48. $designer->replace('{name}', $data->name );
  49. $designer->generate();
  50. $designer->gotoAnchorXY('anchor1');
  51. $designer->SetFontColorRGB('#FF0000');
  52. $designer->SetFont('Arial', 'B', 18);
  53. $designer->Write(20, 'Dynamic text !');
  54. $designer->replace('{name}', $data->name.'2' );
  55. $designer->generate();
  56. $designer->gotoAnchorXY('anchor1');
  57. $designer->SetFontColorRGB('#FF0000');
  58. $designer->SetFont('Arial', 'B', 18);
  59. $designer->Write(20, 'Dynamic text 2 !');
  60. $file = 'app/output/pdf_shapes.pdf';
  61. if (!file_exists($file) OR is_writable($file))
  62. {
  63. $designer->save($file);
  64. parent::openFile($file);
  65. }
  66. else
  67. {
  68. throw new Exception(_t('Permission denied') . ': ' . $file);
  69. }
  70. new TMessage('info', 'Report generated. Please, enable popups in the browser (just in the web).');
  71. }
  72. catch (Exception $e) // in case of exception
  73. {
  74. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  75. }
  76. }
  77. }
  78. ?>

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


FV

Muito bom!, porém ao gerar o relatório o navegador pede para desbloquear o pop-up, então para evitar esse tipo de situação eu resolvi gerar relatório em uma classe TWindow, realizando selects pelos os parâmetros.

Lembrando se caso for utilizar esse modo que usei, deve ser criada uma div com a tag <iframe>.

Ex:

 
  1. <?php
  2. $div = new TElement('div');
  3. $div->id = 'div_modal_relatorio';
  4. $div->style = 'width: 100%; height: 100%;';
  5. $div->add("<iframe style='border: 0px;'' src='download.php?file={$pdf}' width='100%' height='100%'></iframe>");
  6. ?>
</iframe>