Adobe Flex com Relatório em PDF

Bha, uma das coisas mais importante de qualquer sistema, são os relatórios. Então eu não poderia deixar de falar sobre eles e como gerar PDF através de gráficos do Flex.

Neste exemplo explico como gerar PDF através de um gráfico do Flex, utilizando o HTML2PDF. Uma biblioteca em PHP que utiliza o FPDF. Esta biblioteca tem a vantagem de você poder gerar um código HTML com toda estrutura do PDF e enviar para a biblioteca que o converte. Esta facilidade agregada com a facilidade de gerar gráficos com o Flex, torna este exemplo pequeno e simples de ser aplicado a qualquer outro projeto.

É gerado um gráfico do tipo LineChart, e este gráfico é copiado pela função “copiaJPG()“, codificado em 64 bits pela função encodeImageAsBase64 e enviado por HTTPService como uma string. esta String é recebida pelo PHP, que o decodifica com a função base64_decode, e é salvo com o nome de “img.jpg“.

Abaixo o código da função que captura e envia a imagem e a função que recebe a imagem no servidor:

Arquivo main.mxml
private function copiaJPG(source:IBitmapDrawable):void {
    var ohSnap:ImageSnapshot = ImageSnapshot.captureImage(source, 0, new JPEGEncoder(100.0));
    graficoString = ImageSnapshot.encodeImageAsBase64(ohSnap);
    form1.send();
}
.......
<mx:HTTPService id="form1" method="POST" resultFormat="text"
                           result="{AbrirPDF(event.result)}"
                           url="/code/053/br/php/pdf/recebeIMG.php">
    <mx:request>
        <IMG>{graficoString}</IMG>
    </mx:request>
</mx:HTTPService>
Arquivo br/php/pdf/recebeIMG.php
$nomeArquivo = str_replace("//", "/", "imagemRel/img.jpg");
if ($setaArquivo = @fopen($nomeArquivo, 'w'))
{
    @fwrite($setaArquivo, base64_decode( $_POST['IMG']));
}

Quando o servidor responde que a imagem esta salva, a função AbrirPDF é invocada, e uma URL é chamada para enviar o PDF para download.

arquivo main.mxml
private function AbrirPDF(e:Object):void
{
    navigateToURL(new URLRequest("/code/053/br/php/pdf/geraPDF.php"), "download");
}

O arquivo “br/php/pdf/geraPDF.php“, monta um HTML e envia para a função “WriteHTML” que transforma todo o HTML em PDF.

Abaixo segue arquivo completo.

Para ver o código fonte clique aqui.

Fique por dentro de nossas novidades, ideias e atualizações