Alterar Imagem PDFDesigner Pessoal fiz uma alteração na classe AdiantiPDFDesigner, no metodo generate(), para alterar imagens. Pode indicar uma imagem como parâmetro direto no ->genetere( 'caminhdo-da-imagem' ) Também pode colocar dentro do arquivo xml, só que alterando manualmente na tag file com uma variável, exemplo: {nome-variavel} , e na classe que vai gerar o relatório, colocar para fazer a troca...
LC
Alterar Imagem PDFDesigner  
Pessoal fiz uma alteração na classe AdiantiPDFDesigner, no metodo generate(), para alterar imagens.
Pode indicar uma imagem como parâmetro direto no ->genetere( 'caminhdo-da-imagem' )
Também pode colocar dentro do arquivo xml, só que alterando manualmente na tag file com uma variável, exemplo: <file>{nome-variavel}</file> , e na classe que vai gerar o relatório, colocar para fazer a troca: $designer->replace( '{nome-variavel}', 'caminhdo-da-imagem' );

 
  1. <?php
  2. /**
  3. * Generate one PDF page with the parsed elements
  4. * @param $image caminhdo da imagem para substituir - Leandro - Imprime Informática
  5. * @author Pablo Dall'Oglio
  6. */
  7. public function generate($image = null)
  8. {
  9. $this->AddPage( $this->orientation, $this->format );
  10. $style = '';
  11. foreach ($this->elements as $element)
  12. {
  13. if (isset($element['class']))
  14. {
  15. switch ($element['class'])
  16. {
  17. case 'Rectangle':
  18. if ($element['shadowoffset'] > 0)
  19. {
  20. $this->setFillColorRGB($element['shadowcolor']);
  21. $this->Rect($element['x'] + $element['shadowoffset'], $element['y'] + $element['shadowoffset'], $element['width'], $element['height'], 'F');
  22. }
  23. parent::SetLineWidth($element['linewidth']);
  24. $this->setDrawColorRGB( $element['linecolor'] );
  25. $this->setFillColorRGB( $element['fillcolor'] );
  26. $mode = $element['linewidth'] > 0 ? 'FD' : 'F';
  27. parent::Rect($element['x'], $element['y'], $element['width'], $element['height'], $mode);
  28. break;
  29. case 'Ellipse':
  30. $x = $element['x'] + ($element['width']/2);
  31. $y = $element['y'] + ($element['height']/2);
  32. if ($element['shadowoffset'] > 0)
  33. {
  34. $fillc = $this->rgb2int255($element['shadowcolor']);
  35. parent::SetFillColor($fillc[0], $fillc[1], $fillc[2]);
  36. $this->ellipse($x + $element['shadowoffset'], $y + $element['shadowoffset'], $element['width']/2, $element['height']/2, 'F');
  37. }
  38. $mode = $element['linewidth'] > 0 ? 'FD' : 'F';
  39. parent::SetLineWidth($element['linewidth']);
  40. $this->setDrawColorRGB( $element['linecolor'] );
  41. $this->setFillColorRGB( $element['fillcolor'] );
  42. $this->ellipse($x, $y , $element['width']/2, $element['height']/2, $mode);
  43. break;
  44. case 'Text':
  45. $height_factor['Courier'] = 0.335;
  46. $height_factor['Arial'] = 0.39;
  47. $height_factor['Times'] = 0.42;
  48. $text = str_replace( array_keys($this->replaces), array_values($this->replaces), $element['text'] );
  49. $x = $element['x'] - 2;
  50. $y = $element['y'] + ($element['size'] * $height_factor[ $element['font'] ]) - (30 * (1/$element['size']));
  51. if ($element['shadowoffset'] > 0)
  52. {
  53. $this->setFontColorRGB($element['shadowcolor']);
  54. parent::SetFont($element['font'], $style, $element['size']);
  55. $this->writeHTML($x + $element['shadowoffset'], $y + $element['shadowoffset'], $text);
  56. }
  57. parent::SetFont($element['font'], $style, $element['size'] );
  58. $this->setFontColorRGB($element['color']);
  59. $this->writeHTML($x, $y, $text);
  60. break;
  61. case 'Line':
  62. parent::SetLineWidth($element['linewidth']);
  63. $this->setDrawColorRGB( $element['linecolor'] );
  64. parent::Line($element['x'], $element['y'], $element['x2'], $element['y2']);
  65. break;
  66. case 'Image':
  67. /*
  68. * - Alterado por Leandro - Imprime Informática
  69. * - No Desenho colocar um campo imagem com uma imagem qualquer
  70. * - Abrir o arquivo que foi salvo nomedoarquivo.pdf.xml, localizar a tag <file> e coloca uma variavel entre chaves {nomeLogo}
  71. * - Fazer o raplece, exemplo: $designer->replace( '{nomeLogo}', 'app/images/nome-da-image.jpg' );
  72. */
  73. // Verifica se no elemento file tem um chave '{' para fazer substituição por varialvel
  74. if ( strpos($element['file'], '{') === 0 )
  75. {
  76. $element['file'] = str_replace( array_keys($this->replaces), array_values($this->replaces), $element['file'] );
  77. }
  78. //var_dump($image);
  79. if ( !empty($image) )
  80. {
  81. $element['file'] = $image;
  82. }
  83. //var_dump($element['file']);
  84. if (file_exists($element['file']))
  85. {
  86. parent::Image($element['file'], $element['x'], $element['y'], $element['width'], $element['height']);
  87. }
  88. break;
  89. }
  90. }
  91. }
  92. }
  93. ?>

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)


LC

Só lembrando que eu fiz a alteração direto na classe AdiantiPDFDesigner, e esta classe faz parte da lib do Adianti, então, o correto seria criar uma classe para estender essa, como esse exemplo:
https://www.adianti.com.br/forum/pt/view_851?criando-cabecalhos-e-rodapes-nos-re