Aprenda a alterar dinamicamente a imagem de fundo do PDF

Olá Pessoal,

Essa é minha primeira postagem no fórum do scriptcase, porém não é minha primeira participação aqui, pois já recorri muitas vezes a esse fórum para tirar duvidas e tentar resolver problemas que surgem com a utilização do scriptcase, então dessa forma me sinto obrigado a contribuir com o forum da melhor maneira possível.

Comecei a utilizar o scriptcase a mais ou menos dois anos atras e de lá pra cá já desenvolvi diversos sistemas para setores distintos, porem o maior e mais complexo que fiz até hoje foi um sistema para uma cooperativa de distribuição de energia elétrica nesse sistema tive que utilizar o PDF report para fazer a impressão das faturas de energia elétrica e ai que apareceu algumas limitações do PDF report como a opção de alterar dinamicamente a imagem de fundo do PDF, pois precisava ter faturas em preto e branco e faturas em colorido.

Vamos agora ver como fiz para superar esse limitação do PDF report:

Em primeiro lugar tentei alterar o campo imagem nas configurações do PDF colocando uma variavel, global mas não obtive sucesso, então fui verificar no codigo php o que o scriptcase estava fazendo com o texto inserindo no campo imagem e descobri que estava deixando entre aspas duplas invalidando a variavel global, como também a sintaxe é diferente, então coloquei a variavel global da seguinte forma no campo imagem:

" . $_SESSION[‘imagemfundo’] . "

Antes de fazer o procedimento acima rode a aplicação com cada uma das imagens que deseja utilizar no fundo do PDF, pois só dessa maneira que as imagens serão incluídas na biblioteca de imagens do projeto em modo de produção, outra coisa é guardar o nome completo do arquivo, pois irá precisar para passar essa informação na variavel global. Ex.: grp__NM__img__NM__fatura_frente_peb_a4.jpg

Agora para passar o nome da imagem na variavel global tem duas formas:

Através de aplicação externa e dessa forma você terá que acrescentar uma linha de codigo em onApplicationInit chamando a variavel global, pois o campo imagem não faz isso. Ex.: [imagemfundo];

Ou através do filtro do próprio PDF report criando um campo para escolha de cor e setando o nome da imagem na variavel global através de codigo no evento onValidate.

A aplicação em funcionamento pode ser visualizada pelo link abaixo:

http://200.98.129.86/exemplos/impressao_fatura_frente_A4_exemplo/

Alan,

Muito bom. Obrigado por compartilhar.

bacana mesmo…

Eu parei de usar imagens de fundo no ReportPdf…

Só que fiquei curioso pra saber como voce usou 2(duas) imagens diferentes … pag01 e pag02…

Olá Jean,

Realmente não citei como fiz para utilizar imagens diferentes em cada pagina do PDF, foi alterando o arquivo php gerado pelo scriptcase vou mostrar como fiz abaixo:

Configure o numero de pagina nas configurações do PDF para 2 ou mais e configure os campos da segunda pagina para se adequar a imagem que você deseja colocar no fundo, para fazer isso é só definir a imagem do fundo no campo imagem nas configurações do PDF, depois que terminar retorne a imagem que ficara na primeira pagina e mande gerar a aplicação e posteriormente a publique.

Após a publicação procure o arquivo dentro da pasta da aplicação que termina com grid.class.php e abra em um editor de php.

Depois procure pelo termo Pdf_image

Você irá encontrar uma função criada pelo scriptcase para inserir a imagem no PDF, copie e cole essa função e altere somente o nome da função e o nome da imagem que será inserida com a função.

Depois procure pelo termo AddPage se o PDF tem duas paginas será o terceiro termo a ser encontrado, pois o primeiro é para pagina se não houver registros e o segundo é o comando da primeira pagina, altere a função que chama a imagem que fica logo abaixo da função para adicionar a pagina.

Salve o arquivo e upe a pasta da aplicação e pronto terá imagens distintas para as paginas do PDF.

A unica desvantagem desse método é que quando se deseja alterar algo no PDF tem que repetir todo o processo.

Tomara que o pessoal da equipe do Scriptcase veja esse post e disponibilize essas funções nativamente nas próximas versões do Scriptcase.