Nesse vídeo demonstraremos a utilização das classes TWebChannel e TWebEngine, que servem para abrir uma navegação com a internet e carregar um site em uma tela.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe514 Cria uma navegação com a possibilidade de abrir páginas em html ou sites através de urls @type Function @author Atilio @since 05/04/2023 @see https://tdn.totvs.com/display/tec/TWebChannel e https://tdn.totvs.com/display/tec/TWebEngine @obs **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe514() Local aArea := GetArea() Local cRastreio := "AA123456785BR" Local aPergs := {} //Adiciona os parametros para a pergunta aAdd(aPergs, {1, "Rastreio", cRastreio, "", ".T.", "", ".T.", 80, .T.}) //Mostra uma pergunta com parambox para filtrar o subgrupo If ParamBox(aPergs, "Informe os parametros", , , , , , , , , .F., .F.) fMontaBusca() EndIf RestArea(aArea) Return Static Function fMontaBusca() Local cUrl := "" //Tamanho da janela Private nJanLarg := 800 Private nJanAltu := 600 //Navegador Internet Private oWebChannel Private nPort Private oWebEngine Private aComandos := {} //Defina a URL e os comandos que vão ser executados cUrl := "https://rastreamento.correios.com.br/app/index.php" aAdd(aComandos, 'document.getElementById("objeto").value = "' + MV_PAR01 + '"; ') //Cria a dialog DEFINE DIALOG oDlg TITLE "Pesquisa de Transportadora" FROM 000,000 TO nJanAltu,nJanLarg PIXEL // Prepara o conector WebSocket oWebChannel := TWebChannel():New() nPort := oWebChannel::connect() // Cria componente oWebEngine := TWebEngine():New(oDlg, 0, 0, 100, 100,, nPort) oWebEngine:bLoadFinished := {|self,url| fRodaScript(url) } oWebEngine:navigate(cUrl) oWebEngine:Align := CONTROL_ALIGN_ALLCLIENT ACTIVATE DIALOG oDlg CENTERED Return Static Function fRodaScript(cUrl) Local nAtual := 0 //Percorre os comandos For nAtual := 1 To Len(aComandos) oWebEngine:runJavaScript(aComandos[nAtual]) Next Return
Bom pessoal, por hoje é só.
Abraços e até próxima.
Fala aí Daniel, beleza?
É possível rodar a TWebChannel apenas em background sem gerar a tela mas salvar o conteúdo em PDF?
Imagine o cenário onde eu vou passar um link, esse link vai gerar uma página com um documento, e eu quero gerar um PDF desse documento.
Eu não tenho acesso ao servidor do cliente pois é T-Cloud e nenhuma opção referente a serviços ou features do Sistema Operacional pode ser usada, ou seja, é necessário resolver a ação no ADVPL bruto.
Bom dia Poliester, tudo joia graças a Deus e por ai?
Via TWebChannel eu nunca fiz, mas uma ideia que poderia funcionar, nativamente em AdvPL sem recorrer a outros recursos, seria algo mais ou menos assim:
1. Tenta usar a HttpGet para baixar o HTML da página em questão
2. Se der certo, ai teria que ver se tem alguma função em AdvPL, que você consiga “imprimir” esse arquivo .html gerando um .pdf (tenta ver as funções File2Printer, SendFile, InitPrint, entre outras)
3. Se der tudo certo, ai você consegue o pdf da página sem precisar abrir a tela
Depois me dá um feedback se deu certo.
Tenha uma ótima e abençoada segunda feira.
Um forte abraço.