在浏览器中检测本机或第三方PDF插件

Detect native or third-party PDF plugin in browser

本文关键字:第三方 PDF 插件 本机 浏览器 检测      更新时间:2023-09-26

我们正在编写一个小工具,用于查看我们网站生成的PDF,并让浏览器打开它们。我们的情况发生了变化,我们希望PDF在浏览器中100%显示。我们不希望浏览器自动将PDF保存到其下载文件夹中(出于HIPAA原因)。(如果用户自己下载,那没关系。他们发起的保存是一个非常重要的区别。)

我想找到一个解决方案,在浏览器和这个额外的需求之间做出妥协。我的攻击计划是:

  1. 检测本地浏览器插件,例如Google Chrome和Firefox
  2. 如果没有本地浏览器插件可用,请检查第三方插件,例如Adobe或FoxIt
  3. 如果没有第三方插件可用,请使用PDF.js或其他Javascript解决方案进行渲染

我不确定如何进行第一步。我发现步骤2有一些成功之处,但我想让步骤1发挥作用,因为这是主要的用例。如有任何帮助,我们将不胜感激。

提前谢谢。

如果您想以编程方式从服务器渲染pdf文件,您需要将mime类型添加到标头:

PhP示例:

<?php
  $file = 'path/to/PDF/file.pdf';
  $filename = 'filename.pdf';
  header('Content-type: application/pdf');
  header('Content-Disposition: inline; filename="' . $filename . '"');
  header('Content-Transfer-Encoding: binary');
  header('Accept-Ranges: bytes');
  @readfile($file);
?>

C#示例:

Response.AppendHeader("Content-Disposition", "inline; filename=something.pdf")
Return File(output, "application/pdf", "something.pdf")

或者,如果您想使用JavaScript检测pdf查看器,这可以帮助您:JavaScript检测是否安装了Adobe Reader