vb.net Webbrowser 通过AjAx调用Pdf.js 显示pdf的方法


由于使用了 自定义的 http通讯服务,httprequest 等模块来写的.

需要 使用 Post 的方法来 推送一些 信息, 而显示pdf文件,使用 pdf.js 模块,开始 使用了自定义的文件传输,先把Pdf文件下载到指定的目录.

然后想用pdf.js加载. 发现 浏览器为了安全 不支持 读取本地文件,除非 手动点击 input标签按钮. 这不好.

于是 就改用 ajax 从服务器获取,先是碰到了 ajax跨域问题,在前面的一篇文章中介绍解决方法.

下面的代码 是 pdf.js 的 viewer.html 加载后 通过 InvokeScript 调用
WebBrowser.Document.InvokeScript("XhrLoadPdf", ObjArr)
同时要注意 调整 Webbrowser的版本 到 ie9 以上,否则 pdf.js会出现错误


<script type="text/javascript"> function XhrLoadPdf(XmlStr, PdfFileUrl, PdfSessionID) { //var XmlStr; //保存 Post 提交的xml数据 //var PdfFileUrl; //pdf文件网址 //var PdfSessionID; //传递pdf文件获取时的SessionID,用于身份验证 if (XmlStr.length > 0) { var Xhr0; //ajax-xmlhttp 对象 if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari Xhr0 = new XMLHttpRequest(); } else { // code for IE6, IE5 Xhr0=new ActiveXObject("Microsoft.XMLHTTP"); } Xhr0.open("POST", PdfFileUrl, true); Xhr0.setRequestHeader('SessionID', PdfSessionID); Xhr0.setRequestHeader('Content-Type', 'text/xml'); Xhr0.responseType = "arraybuffer"; //xhr 回调函数 Xhr0.onreadystatechange = function (e) { if (this.readyState == 4 && this.status == 200) { //PDFViewerApplication.open( this.response,0); PDFViewerApplication.open(new Uint8Array(this.response), 0); } }; Xhr0.send(XmlStr); } } </script>

 

posted on 2020-12-26 22:21  boy8199  阅读(398)  评论(0编辑  收藏  举报