zoukankan      html  css  js  c++  java
  • 万恶之源的IE浏览器下载pdf的兼容

    1、IE浏览器下载文件

      location = '文件路径'   // 简单粗暴好用的下载方式(如果是pdf文件以及有pdf插件,会直接预览,如果不想预览可以参照下面的方法)

    2、文件流下载(IE10, IE11)

      先是浏览器的判断

      (window.ActiveXObject || "ActiveXObject" in window)   true 为IE浏览器,false 为非IE浏览器

      document.documentMode 这个方法很好用,专门判断IE浏览器的版本 返回值类型为数字 8 9 10 11等

    var url = res;
    var xhr = new XMLHttpRequest();
    xhr.open('get', url, true); 
    xhr.responseType = "blob"; // 返回类型blob
    // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
    xhr.onload = function() {
      // 请求完成
      if(this.status === 200) {
        // 返回200
        var blob = this.response;
        window.navigator.msSaveBlob(blob, '文件.pdf'); // 可自定义文件名
       }
    }
    // 发送ajax请求
    xhr.send();

    3、PDF.js(我只找到了最新的版本,只能在IE11上使用,如果有低版本IE都可用的请转我一份,谢谢)

    4、如果业务需要pdf预览,除了PDF.js外还可以通过判断用户是否下载Adobe Reader PDF,直接用这个插件预览(IE自身是没有带pdf预览插件的,很坑)

      

    // 判断是否有PDF阅读器(true为有pdf预览插件,false表示没有) 如果有pdf插件,可以直接使用location = '文件路径' 会自动预览
    function isAcrobatPluginInstall () {
      //下面代码都是处理IE浏览器的情况 
      if ((window.ActiveXObject) || (navigator.userAgent.indexOf("Trident") > -1)) {
        for(x = 2; x < 10; x++) {
          try {
           oAcro = eval("new ActiveXObject('PDF.PdfCtrl." + x + "');");
           if(oAcro) {
             return true;
           }
          } catch(e) {}
        }
        try {
          oAcro4 = new ActiveXObject('PDF.PdfCtrl.1');
          if(oAcro4)
            return true;
        } catch(e) {}
        try {
          oAcro7 = new ActiveXObject('AcroPDF.PDF.1');
          if(oAcro7)
            return true;
        } catch(e) {}
      }else{
        //chrome和FF、safrai等其他浏览器
        return true;
      }
    };
  • 相关阅读:
    第五小节之JAVA IO流
    第四小节之Java 集合类
    初学的重点
    第三小节之Java API
    实践周java基础软件开发app之五子棋
    出栈合法性
    Python介绍
    Ubuntu主题美化篇
    Ubuntu16.04比较好的一系列软件安装介绍
    Ubuntu使用Shadow socks-qt5
  • 原文地址:https://www.cnblogs.com/wangjishu/p/13182415.html
Copyright © 2011-2022 走看看