- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Relatórios
- FWMsPrinter + Google Charts API
Perguntas FWMsPrinter + Google Charts API
- armando.lima
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
9 anos 6 meses atrás - 9 anos 6 meses atrás #28153
por armando.lima
FWMsPrinter + Google Charts API foi criado por armando.lima
Olá amigos!
Alguém já se aventurou na integração entre a classe FWMsPrinter e a API do Google Charts?
Hoje eu gero relatórios em PDF através da FWMsPrinter e agora gostaria de incluir os gráficos da API do Google no final da página desse relatório.
O meu problema é quando eu uso o HTTPGet pra executar o HTML que constrói o gráfico. Está retornando NULL.
Mas quando eu executo o HTML no browse, ele gera o gráfico de boa.
Preciso fazer isso porque todas as classes do próprio ADVPL geram gráficos feios. Por isso gostaria de trazer gráficos de fora.
Se alguém tiver uma luz pra essa aventura louca, já agradeço a ajuda.
Att,
Armando Lima.
Analista de Sistemas
Alguém já se aventurou na integração entre a classe FWMsPrinter e a API do Google Charts?
Hoje eu gero relatórios em PDF através da FWMsPrinter e agora gostaria de incluir os gráficos da API do Google no final da página desse relatório.
O meu problema é quando eu uso o HTTPGet pra executar o HTML que constrói o gráfico. Está retornando NULL.
Mas quando eu executo o HTML no browse, ele gera o gráfico de boa.
Preciso fazer isso porque todas as classes do próprio ADVPL geram gráficos feios. Por isso gostaria de trazer gráficos de fora.
Se alguém tiver uma luz pra essa aventura louca, já agradeço a ajuda.
Att,
Armando Lima.
Analista de Sistemas
Ultima edição: 9 anos 6 meses atrás por armando.lima. Razão: Formatação textual
Por favor Acessar ou Registrar para participar da conversa.
- armando.lima
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
9 anos 6 meses atrás - 9 anos 6 meses atrás #28178
por armando.lima
Respondido por armando.lima no tópico FWMsPrinter + Google Charts API
Bom, seguindo um pequeno roteiro:
Passo 1 - Enviar dados ao Google Charts para que ele gere a imagem do gráfico. (Por URL ou Construção de HTML ).
Passo 2 - Receber essa imagem via HTTP (Utilizando a função HTTPGet )
Passo 3 - Salvar a imagem na pasta TEMP (Utilizando a função MemoWrite )
Passo 4 - No meu relatório que é feito em FWMsPrinter , usar a função SayBitmap() para pegar a imagem salva em TEMP e inserir na página do relatório.
Existem 2 opções para usar o Google Charts.
Opção 1 - Diretamente no URL. Saiba mais aqui . Seguindo o roteiro acima, essa API funciona direitinho. Consegui conectar ao Google, Receber a imagem, Salvar a imagem e Inserí-la no relatório. Maaaasssss... Infelizmente esta API foi descontinuada pelo Google e pode ser desativada a qualquer momento. Não quero correr o risco.
Opção 2 - Pela construção do HTML. Saiba mais aqui . Seguindo o mesmo roteiro, já empaquei no Passo 1. Por alguma razão, não consigo receber essa imagem para poder salvá-la. Em tese, o HTML tem que retornar uma imagem estática ao invés do HTML dinâmico, e fiz isso usando getImageURI que faz com que o HTML retorne um simples PNG. Dessa forma, o retorno do HTML gerado por essa Opção 2 seria o mesmo retornado pela Opção 1.
O que pode estar acontecendo?
Passo 1 - Enviar dados ao Google Charts para que ele gere a imagem do gráfico. (Por URL ou Construção de HTML ).
Passo 2 - Receber essa imagem via HTTP (Utilizando a função HTTPGet )
Passo 3 - Salvar a imagem na pasta TEMP (Utilizando a função MemoWrite )
Passo 4 - No meu relatório que é feito em FWMsPrinter , usar a função SayBitmap() para pegar a imagem salva em TEMP e inserir na página do relatório.
Existem 2 opções para usar o Google Charts.
Opção 1 - Diretamente no URL. Saiba mais aqui . Seguindo o roteiro acima, essa API funciona direitinho. Consegui conectar ao Google, Receber a imagem, Salvar a imagem e Inserí-la no relatório. Maaaasssss... Infelizmente esta API foi descontinuada pelo Google e pode ser desativada a qualquer momento. Não quero correr o risco.
Opção 2 - Pela construção do HTML. Saiba mais aqui . Seguindo o mesmo roteiro, já empaquei no Passo 1. Por alguma razão, não consigo receber essa imagem para poder salvá-la. Em tese, o HTML tem que retornar uma imagem estática ao invés do HTML dinâmico, e fiz isso usando getImageURI que faz com que o HTML retorne um simples PNG. Dessa forma, o retorno do HTML gerado por essa Opção 2 seria o mesmo retornado pela Opção 1.
O que pode estar acontecendo?
Ultima edição: 9 anos 6 meses atrás por armando.lima.
Por favor Acessar ou Registrar para participar da conversa.
- armando.lima
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
9 anos 6 meses atrás - 9 anos 6 meses atrás #28215
por armando.lima
Respondido por armando.lima no tópico FWMsPrinter + Google Charts API
Pessoal,
Ainda não consegui integrar o FWMsPrinter com a nova API do Google Charts.
Entretanto consegui integrar com a antiga API . Agora eu consigo gerar relatórios em PDF com os gráficos do Google. Quem tiver interesse, segue código:
É válido lembrar que a antiga API está depreciada pelo Google e pode ser desativada a qualquer momento, por isso eu gostaria de conseguir integrar com a nova API, que além de ser mais atual, também tem muitos outros modelos de gráficos.
Quem conseguir me ajudar nessa luta, agradeço!
Att,
Armando Lima
Analista de Sistemas
Skype: armandolimma
Ainda não consegui integrar o FWMsPrinter com a nova API do Google Charts.
Entretanto consegui integrar com a antiga API . Agora eu consigo gerar relatórios em PDF com os gráficos do Google. Quem tiver interesse, segue código:
/*
+-----------------------------------------------------------------------------+
| PROGRAMA: TesteGfGg | AUTOR: Armando Lima | DATA: 20/05/2015 |
+-----------------------------------------------------------------------------+
| DESCRIÇÃO: Conecta na antiga API do Google Charts para gerar gráficos. |
+-----------------------------------------------------------------------------+
| USO: Rotinas gerais. |
+-----------------------------------------------------------------------------+
*/
User Function TesteGfGg
_cTitPDF := "Relatório com gráficos do Google Charts" // Título para o arquivo PDF
nLin := 22 //Linha onde vai começar a impressão
_nPagina := 1 //Relatório começa na página 1
_nLimite := 837 //Limite para impressão dos dados
Cabec1 := "" //Cabeçalho auxiliar
Cabec2 := "" //Cabeçalho auxiliar
Cabec3 := "" //Cabeçalho auxiliar
oPrint := FWMSPrinter():New(_cTitPDF,6,.F.,,.T.) //Constrói objeto da classe FWMSPrinter
oPrint:SetPortrait() //Define relatório como paisagem
oPrint:SetPaperSize(9) //Define tamanho como A4
oPrint:SetMargin(20,20,20,20) //Define margens de impressão
//Gráficos de barras 1
_cURL := "https://chart.googleapis.com/chart?cht=bhs&chs=200x125&chd=t:10,50,60,80,40|50,60,100,40,20&chco=4d89f9,c6d9fd&chbh=20&chds=0,160" //URL do Google Charts API
_oPNG := HttpGet(_cURL) //Conecta com a web, envia a URL e recebe a imagem do gráfico
_cNomeArq := GetTempPath()+ "graf_bar1.PNG" //Define o nome do arquivo de imagem
MemoWrite(_cNomeArq,_oPNG) //Salva na pasta TEMP
oPrint:SayBitmap(30, 15, _cNomeArq, 200, 100) //Pega essa imagem salva e coloca no relatório
fErase(_cNomeArq) //Apaga o arquivo
//Gráficos de barras 2
_cURL := "https://chart.googleapis.com/chart?cht=bvs&chs=200x125&chd=t:10,50,60,80,40|50,60,100,40,20&chco=4d89f9,c6d9fd&chbh=20&chds=0,160" //URL do Google Charts API
_oPNG := HttpGet(_cURL) //Conecta com a web, envia a URL e recebe a imagem do gráfico
_cNomeArq := GetTempPath()+ "graf_bar2.PNG" //Define o nome do arquivo de imagem
MemoWrite(_cNomeArq,_oPNG) //Salva na pasta TEMP
oPrint:SayBitmap(30, 250, _cNomeArq, 200, 100) //Pega essa imagem salva e coloca no relatório
fErase(_cNomeArq) //Apaga o arquivo
//Gráficos de barras 3
_cURL := "https://chart.googleapis.com/chart?cht=bvs&chbh=5,2&chm=D,0033FF,2,0,5,1&chbh=20&chs=200x150&chd=s2:1XQbnf4,EWoQMUB,9halxp9&chco=4D89F9,C6D9FD" //URL do Google Charts API
_oPNG := HttpGet(_cURL) //Conecta com a web, envia a URL e recebe a imagem do gráfico
_cNomeArq := GetTempPath()+ "graf_bar3.PNG" //Define o nome do arquivo de imagem
MemoWrite(_cNomeArq,_oPNG) //Salva na pasta TEMP
oPrint:SayBitmap(30, 400, _cNomeArq, 200, 100) //Pega essa imagem salva e coloca no relatório
fErase(_cNomeArq) //Apaga o arquivo
//Gráficos de pizza 1
_cURL := "https://chart.googleapis.com/chart?cht=p&chd=s:Uf9a&chs=300x120&chl=January|February|March|April&chdl=30%C2%B0|40%C2%B0|50%C2%B0|60%C2%B0" //URL do Google Charts API
_oPNG := HttpGet(_cURL) //Conecta com a web, envia a URL e recebe a imagem do gráfico
_cNomeArq := GetTempPath()+ "graf_piz1.PNG" //Define o nome do arquivo de imagem
MemoWrite(_cNomeArq,_oPNG) //Salva na pasta TEMP
oPrint:SayBitmap(200, 15, _cNomeArq, 250, 100) //Pega essa imagem salva e coloca no relatório
fErase(_cNomeArq) //Apaga o arquivo
//Gráficos de pizza 2
_cURL := "https://chart.googleapis.com/chart?cht=p3&chs=280x100&chd=s:Hellob&chl=May%7CJune%7CJuly%7CAugust%7CSeptember%7COctober" //URL do Google Charts API
_oPNG := HttpGet(_cURL) //Conecta com a web, envia a URL e recebe a imagem do gráfico
_cNomeArq := GetTempPath()+ "graf_piz2.PNG" //Define o nome do arquivo de imagem
MemoWrite(_cNomeArq,_oPNG) //Salva na pasta TEMP
oPrint:SayBitmap(200, 300, _cNomeArq, 250, 100) //Pega essa imagem salva e coloca no relatório
fErase(_cNomeArq) //Apaga o arquivo
oPrint:Preview() //Abre o relatório em PDF
Return
É válido lembrar que a antiga API está depreciada pelo Google e pode ser desativada a qualquer momento, por isso eu gostaria de conseguir integrar com a nova API, que além de ser mais atual, também tem muitos outros modelos de gráficos.
Quem conseguir me ajudar nessa luta, agradeço!
Att,
Armando Lima
Analista de Sistemas
Skype: armandolimma
Ultima edição: 9 anos 6 meses atrás por armando.lima.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Relatórios
- FWMsPrinter + Google Charts API
Tempo para a criação da página:0.109 segundos