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>
  • 相关阅读:
    PyTorch Tutorials——LEARN THE BASICS
    vscode+remote ssh搭建《dive into deep learning》所需环境
    node.js02 安装Node环境
    node.js01 认识node.js
    二分查找
    暴力枚举
    博客园自定义域名
    斐波那契数列(公兔子掳母兔子问题)
    为什么我要写博客?
    C++基本语法
  • 原文地址:https://www.cnblogs.com/MadeInChinese/p/14194705.html
Copyright © 2011-2022 走看看