2015-04-05 74 views
0

我们正在编写一个小工具来查看我们网站上生成的PDF并让浏览器打开它们。我们的情况扭曲是我们希望PDF在100%的时间内显示在浏览器中。我们不希望浏览器自动将PDF保存到其下载文件夹(对于HIPAA原因)。 (如果用户自己下载它,那很好,由他们发起的保存是一个非常重要的区别)。在浏览器中检测本地或第三方PDF插件

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

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

我不确定如何去执行第1步。我找到了第2步的几个命中,但是我想要得到第1步的工作,因为这是主要用例。任何帮助,将不胜感激。

在此先感谢。

+1

它是不清楚你在问什么。如果PDF可通过* any *机制在浏览器中查看,则根据定义,浏览器将下载该文件。 – Pointy 2015-04-05 18:13:37

+0

我已编辑帖子。对不起,如果不明确。我们(我们的首席执行官)希望PDF不会保存到浏览器的下载文件夹中。我们不关心缓存。即使没有安装PDF插件,我们也希望PDF在100%的时间内显示在浏览器中。 – dythim 2015-04-05 19:21:51

+0

服务器应用程序在php,asp中编码?如果你使用头来渲染文件('Content-type:application/pdf');如果您确实认为HIPAA对于下载文件夹而不是浏览器缓存文件夹有问题,那么该文件将被默认浏览器pdf查看器 – TotPeRo 2015-04-05 19:36:07

回答

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 Detect if Adobe Reader is installed

+0

谢谢,我会试试看。如果我能够找到Google和Firefox插件,那对我们来说就足够了。 – dythim 2015-04-06 03:31:03

+0

看起来不错!谢谢你的帮助。 – dythim 2015-04-06 04:47:32

+0

@dythim您好,我很高兴我能帮到您 – TotPeRo 2015-04-06 07:07:30