如果未安装Adobe Reader,如何显示消息?

时间:2014-02-05 16:43:22

标签: javascript jquery html pdf internet-explorer-10

我已在我的页面上嵌入PDF,使用“<iFrame>”我正在调用包含<Object>标记的HTML页面,其中嵌入了<embed>标记如果没有安装Adobe Reader,则显示PDF和

标签。

在Firefox,Chrome和IE 11上,如果安装了PDF阅读器,它将仅显示PDF,但是当没有阅读器时,它会在 <p> 标签中显示该消息“安装Adobe阅读器”。

我的问题是: - 在IE10中,即使安装了Adobe阅读器,它也会在 <p> 标记中显示“安装Adobe阅读器”消息。 如果安装了Adobe Reader,请建议如何隐藏消息,并且仅当未安装PDF阅读器时才显示消息。

这是我的代码:

来自PDF页面的

iframe代码

            <div id="pdf">

            <iframe id="pdfIframe" name="pdfIframe" src="pdfView.html" style="width: 100%; height: 100%;" scrolling="auto" frameborder="1">
                Your browser doesn't support inline frames.
            </iframe>
        </div>

PDF页码:

<body>
<style>
    html, body, #blankPane {
        height: 100%;
        margin: 0;
        padding: 0;
    }

        #blankPane p {
            font-weight: bold;
            line-height: 30px;
            height: auto;
            width: 98%;
            margin: 0 auto;
            color: #bc0000;
        }

        #blankPane * {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
        }
</style>

<div id="blankPane" class="overflowHidden">

    <object data="lorem.pdf" type="application/pdf">
        <p>
            It appears you don't have Adobe Reader or PDF support in this web browser.
            <br />
            <a href="lorem.pdf">Click here to download the PDF</a> OR <a href="http://get.adobe.com/reader/" target="_blank">Click here to install Adobe Reader</a>
        </p>
        <embed id="pdfDocument" src="lorem.pdf" type="application/pdf" />
    </object>
</div>

请建议!!!

1 个答案:

答案 0 :(得分:0)

您可以检测使用下面的javascript安装的Adobe Acrobat版本,或者如果您不想依赖Adobe Acrobat,则可以使用FlexPaper显示您的文档

var getAcrobatInfo = function() {

  var getBrowserName = function() {
    return this.name = this.name || function() {
      var userAgent = navigator ? navigator.userAgent.toLowerCase() : "other";

      if(userAgent.indexOf("chrome") > -1)        return "chrome";
      else if(userAgent.indexOf("safari") > -1)   return "safari";
      else if(userAgent.indexOf("msie") > -1)     return "ie";
      else if(userAgent.indexOf("firefox") > -1)  return "firefox";
      return userAgent;
    }();
  };

  var getActiveXObject = function(name) {
    try { return new ActiveXObject(name); } catch(e) {}
  };

  var getNavigatorPlugin = function(name) {
    for(key in navigator.plugins) {
      var plugin = navigator.plugins[key];
      if(plugin.name == name) return plugin;
    }
  };

  var getPDFPlugin = function() {
    return this.plugin = this.plugin || function() {
      if(getBrowserName() == 'ie') {
        //
        // load the activeX control
        // AcroPDF.PDF is used by version 7 and later
        // PDF.PdfCtrl is used by version 6 and earlier
        return getActiveXObject('AcroPDF.PDF') || getActiveXObject('PDF.PdfCtrl');
      }
      else {
        return getNavigatorPlugin('Adobe Acrobat') || getNavigatorPlugin('Chrome PDF Viewer') || getNavigatorPlugin('WebKit built-in PDF');
      }
    }();
  };

  var isAcrobatInstalled = function() {
    return !!getPDFPlugin();
  };

  var getAcrobatVersion = function() {
    try {
      var plugin = getPDFPlugin();

      if(getBrowserName() == 'ie') {
        var versions = plugin.GetVersions().split(',');
        var latest   = versions[0].split('=');
        return parseFloat(latest[1]);
      }

      if(plugin.version) return parseInt(plugin.version);
      return plugin.name

    }
    catch(e) {
      return null;
    }
  }

  //
  // The returned object
  // 
  return {
    browser:        getBrowserName(),
    acrobat:        isAcrobatInstalled() ? 'installed' : false,
    acrobatVersion: getAcrobatVersion()
  };
};

如何调用这些函数的示例:

var info = getAcrobatInfo();
alert(info.browser+ " " + info.acrobat + " " + info.acrobatVersion);