vb.net - Saving pdf document from webbrowser control -
i'm navigating webbrowser control url this; http://www.who.int/cancer/modules/team%20building.pdf
it's shown in webbrowser control. want download pdf file computer. tried many ways;
dim filepath string filepath = "d:\temp1.pdf" dim client webclient = new webclient() client.downloadfilecompleted += new asynccompletedeventhandler(client_downloadfilecompleted); client.downloadfileasync(webbrowserex1.url, filepath) this 1 downloads pdf there nothing in file.
also tried with
objwebclient.downloadfile() nothing changed.
i tried show save or print dialog;
webbrowserex1.showsaveasdialog() webbrowserex1.showprintdialog() but didnt show dialog. maybe last 1 because doesnt wait load the pdf webbrowser completely.
when try html files there no problem dowload, in .pdf file, think didn't manage wait file loaded pdf browser. function(s);
private sub waitforpageload(byval adimno string) if adimno = "1" addhandler webbrowserex1.documentcompleted, new webbrowserdocumentcompletedeventhandler(addressof pagewaiter) while not pageready application.doevents() end while pageready = false end if end sub private sub pagewaiter(byval sender object, byval e webbrowserdocumentcompletedeventargs) if webbrowserex1.readystate = webbrowserreadystate.complete pageready = true removehandler webbrowserex1.documentcompleted, new webbrowserdocumentcompletedeventhandler(addressof pagewaiter) end if end sub are not working situation. mean gets infinite loop.
so knows how wait load pdf save computer.
you test url when document completed fires , if .pdf, following navigate back, example.
private sub form1_load(byval sender system.object, byval e system.eventargs) handles mybase.load webbrowserex1.navigate("http://www.who.int/cancer/modules/team%20building.pdf") end sub private sub webbrowserex1_documentcompleted(byval sender object, byval e system.windows.forms.webbrowserdocumentcompletedeventargs) handles webbrowserex1.documentcompleted if webbrowserex1.url.tostring.contains(".pdf") using webclient = new webclient() dim bytes = webclient.downloaddata(webbrowserex1.url.tostring) 'again variable here file.writeallbytes(path.combine(environment.getfolderpath(environment.specialfolder.desktop), "test.pdf"), bytes) 'save desktop or specialfolder. list readily available user folders end using 'webbrowserex1.goback() 'could send browser page end if end sub you need make filename "test" variable instead of static string or else overwrite same file each time. perhaps:
webbrowserex1.documenttitle.tostring & ".pdf" instead, save file pdf named webpage title. problem there if page contains illegal characters (that windows doesnt let save with) throw exception should handled.
Comments
Post a Comment