zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    <Android 应用 之路> 聚合数据SDK
    AngularJS所有版本下载地址
    <Android 应用 之路> 天气预报(三)
    <Android 应用 之路> 天气预报(二)
    Java集合框架—Set
    HBase数据模型(2)
    HBase数据模型(1)
    ESP8266串口WiFi扩展板详解
    Arduino ESP8266编程深入要点
    <Android Framework 之路>多线程
  • 原文地址:https://www.cnblogs.com/MadeInChinese/p/14194705.html
Copyright © 2011-2022 走看看