vb.net Webbrowser 通過AjAx呼叫Pdf.js 顯示pdf的方法
阿新 • • 發佈:2020-12-27
由於使用了 自定義的 http通訊服務,httprequest 等模組來寫的.
需要 使用 Post 的方法來 推送一些 資訊, 而顯示pdf檔案,使用 pdf.js 模組,開始 使用了自定義的檔案傳輸,先把Pdf檔案下載到指定的目錄.
然後想用pdf.js載入. 發現 瀏覽器為了安全 不支援 讀取本地檔案,除非 手動點選 input標籤按鈕. 這不好.
於是 就改用 ajax 從伺服器獲取,先是碰到了 ajax跨域問題,在前面的一篇文章中介紹解決方法.
下面的程式碼 是 pdf.js 的 viewer.html 載入後 通過 InvokeScript 呼叫
WebBrowser.Document.InvokeScript("XhrLoadPdf", ObjArr)
<script type="text/javascript"> functionXhrLoadPdf(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>