1. 程式人生 > 實用技巧 >vb.net Webbrowser 通過AjAx呼叫Pdf.js 顯示pdf的方法

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)


<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>