{meta}

A melhor parceira de TI para o seu negócio English version

Adianti Forum

Conheça mais sobre com o livro:

Adianti Framework para PHP

  • Instalação e configuração;
  • Modelos e persistência;
  • Componentes de apresentação;
  • Organização e controle;
  • Desenvolvimento ágil com Studio Pro.
Ver detalhes...

Busca

Digite o termo a ser localizado:

Lista de discussões

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


Comentários

Felipe Vicente: ( 2016-04-29)
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. ?>
 


Você precisa realizar login para enviar posts, comentários, dentre outros. Para isso, clique em um dos botões a seguir para logar utilizando a API de um dos serviços.