2015-04-05 41 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