SergioFeitoza Posted March 24, 2021 Share Posted March 24, 2021 Hi friends. Can anyone suggest me a book to get or to buy where I can study to understand dep the Java Script language. I want, for example, to know how these phrases are formed, to know about Ajax events and even about how to do animations with Java Script. I thank you in advance. My first need is to understand how to save, in a desired directory, as pdf a PrintScrenn / snap shot of a page. I could read a lot of examples in the forum but I do not know sufficiently to understand them. For example , how to implment something equivalent to the Function ScreenShot below? If it is not permitted to post names of books in the forum please write to my email sergiofeitozacosta@gmail.com Thanks in advance function screenshot(){ html2canvas(document.querySelector("#capture")).then( canvas => { var a = document.createElement('a'); a.href = canvas.toDataURL("image/jpeg",1.0).replace("image/jpeg", "image/octet-stream"); a.download = 'somefilename.jpg'; a.click(); }); } with UniButton1 do JSInterface.JSCode('html2canvas(document.querySelector("#' + JSId +'")).then(function(canvas) {ajaxRequest('#1', "getData", ["base64Data="+canvas.toDataURL()])});'); procedure TMainForm.UniButton1AjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); begin if EventName='getData' then begin // Params.Values['base64Data'] // Here you need to decode the Base64 string // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAAZ...AAAABJRU5ErkJggg== end; end; function canvasSaveAs(uri, filename) { var link = document.createElement('a'); if (typeof link.download === 'string') { link.href = uri; link.download = filename; document.body.appendChild(link); link.click(); document.body.removeChild(link); } else { window.open(uri); } } fName := 'capture' + FormatDateTime('ddmmyyyyhhnnss', Now); UniPanel1.JSInterface.JSCode( 'html2canvas(document.querySelector("#'+ UniPanel1.JSId +'")).then(function(canvas) {'+ ' canvasSaveAs(canvas.toDataURL(), "'+ fName +'");'+ '});' ); Quote Link to comment Share on other sites More sharing options...
Fred Montier Posted March 26, 2021 Share Posted March 26, 2021 Caro Sergio: Este problema de printscreen já solucinei há algum tempo. No nosso grupo do telegram tem a solução correta usando outra técnica. Usando esta lib javascript pode ser feita com base na posição dos controles do seu program (um panel , o form etc... ) Atualmente, não se pode usar o comando normais de atalho para dar um print e colcar automatico via área de memória do browser via windows por questões de segurança. Isto funcionava na maioria dos browsers até uns 5 anos atrás e removeram pois andavam roubando dados de usuários com esta técnica. Portanto, somente usando comandos javascript e usando o código para salvar via download ou salvar o arquivo direto no disco, mas não se pode usar área externa de memória com o clipboard nativo do windows (via CTRL + V em qualquer programa) e o browser. O contrário, ainda é possivel (de um programa externo colar no browser), ou ao menos ainda funcionava. Segue o projeto usando sua lib. Depois termino com o suporte para envio por e-mail da imagem. Mas é coisa simples. Veja no nosso site https://www.unigui.com.br ou no telegram https://t.me/uniguiBrazil Sobre a sua pergunta, qualquer curso de Javascripty ajuda. É bem mais simples que pascal. Entretanto, no caso do uniGUI tem que estudcar o sencha ext.js que insere todo uma gama de propriedades, funções e objetos que somente existe nele. E muita coisa de JS de fora não vai funcionar direto no Ex.JS pois é incompatível. Project available only in the pack Silver at https://www.uniguiexpress.com Quote Link to comment Share on other sites More sharing options...
Fred Montier Posted March 26, 2021 Share Posted March 26, 2021 Neste exemplo tem função para baixar direto via download e salvar no servidor uniGUI silenciosamente. Mostra como selecionar o controle container que no caso do form tem uma propriedade adicional para pegar o jsID. Este tipo de detalhe que só existe no uniGUI / Sencha Ext.JS. Se pesquisar no forum, vai achar poucas responstas para pegar está info. Na época, lembro que deu muito trabalho. Quote Link to comment Share on other sites More sharing options...
Fred Montier Posted March 26, 2021 Share Posted March 26, 2021 PS: Quando se já um printscreen (Tecla PrintScreen) da tela do browser, se está usando o clipboard do windows. Quando se dá um print seletivo no browser via JS, usa-se o browser como base e sua área útil visível apenas. São coisas completamente diferentes apesar de parecerem a mesma ! Quote Link to comment Share on other sites More sharing options...
SergioFeitoza Posted March 26, 2021 Author Share Posted March 26, 2021 1 hour ago, Fred Montier said: Caro Sergio: Este problema de printscreen já solucinei há algum tempo. No nosso grupo do telegram tem a solução correta usando outra técnica. Usando esta lib javascript pode ser feita com base na posição dos controles do seu program (um panel , o form etc... ) Atualmente, não se pode usar o comando normais de atalho para dar um print e colcar automatico via área de memória do browser via windows por questões de segurança. Isto funcionava na maioria dos browsers até uns 5 anos atrás e removeram pois andavam roubando dados de usuários com esta técnica. Portanto, somente usando comandos javascript e usando o código para salvar via download ou salvar o arquivo direto no disco, mas não se pode usar área externa de memória com o clipboard nativo do windows (via CTRL + V em qualquer programa) e o browser. O contrário, ainda é possivel (de um programa externo colar no browser), ou ao menos ainda funcionava. Segue o projeto usando sua lib. Depois termino com o suporte para envio por e-mail da imagem. Mas é coisa simples. Veja no nosso site https://www.unigui.com.br ou no telegram https://t.me/uniguiBrazil Project51-PrintScreen2Canvas.rar 827.07 kB · 2 downloads Sobre a sua pergunta, qualquer curso de Javascripty ajuda. É bem mais simples que pascal. Entretanto, no caso do uniGUI tem que estudcar o sencha ext.js que insere todo uma gama de propriedades, funções e objetos que somente existe nele. E muita coisa de JS de fora não vai funcionar direto no Ex.JS pois é incompatível. Caro Fred Muiito Obrigado Resposta muito útil, completa e bem explicada . Vou trabalhar nela agora Dear Fred Thank you Very useful, complete and well explained answer. I will work on it now Quote Link to comment Share on other sites More sharing options...
SergioFeitoza Posted March 26, 2021 Author Share Posted March 26, 2021 1 hour ago, Fred Montier said: Neste exemplo tem função para baixar direto via download e salvar no servidor uniGUI silenciosamente. Mostra como selecionar o controle container que no caso do form tem uma propriedade adicional para pegar o jsID. Este tipo de detalhe que só existe no uniGUI / Sencha Ext.JS. Se pesquisar no forum, vai achar poucas responstas para pegar está info. Na época, lembro que deu muito trabalho. Caro Fred Muiito Obrigado Resposta muito útil, completa e bem explicada . Vou trabalhar nela agora Dear Fred Thank you Very useful, complete and well explained answer. I will work on it now Quote Link to comment Share on other sites More sharing options...
SergioFeitoza Posted March 27, 2021 Author Share Posted March 27, 2021 Hi Fred This demo you posted is really very good I will implement it in my code Thank you very much again Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.