2012-02-21 51 views
2

我從來沒有想過這個,但有沒有辦法控制當用戶點擊一個PDF文件的鏈接時會發生什麼?鏈接在網頁上查看或下載PDF

我老闆想提供兩個環節做到以下幾點:1。 此查看PDF瀏覽器 2.下載PDF

有沒有辦法做到這一點?我不考慮這些東西,大多數現代瀏覽器都會在瀏覽器中打開PDF。如果我想下載它,我右鍵單擊下載。任何方式來強制行動?

感謝

+1

[隊可能重複打開‘另存爲...’彈出開放在文本鏈接單擊爲HTML中的PDF](http://stackoverflow.com/questions/3802510/force-to-open-save-as-popup-open-at-text-link-click-for-pdf-in- HTML) – 2012-02-21 20:52:12

回答

1

如何顯示PDF是基於用戶的瀏覽器版本和配置。例如,Chrome默認包含PDF查看器,但用戶可以更改插件的行爲(自動打開PDF,禁用,詢問用戶)。

一種方法是設置ContentType和Content-Disposition,以便瀏覽器知道如何處理請求。例如在ASP.NET中,您可以這樣做:

Response.ContentType =「application/pdf」;

Response.AddHeader(「Content-Disposition」,「attachment; filename = filename。PDF格式「);

披露:我劫持從this article

這段代碼讓我知道,如果這有助於

3

您可以鏈接到資產,或者可以將數據流式傳輸到瀏覽器。這些是你唯一的兩個選擇。

如果您鏈接到一個文件:<a href="file.pdf">是否在瀏覽器中打開它完全取決於最終用戶的瀏覽器和操作系統首選項。

您可以強制下載文件,但是可以通過流式傳輸到瀏覽器,這通常會觸發瀏覽器的對話框save as

你最好的選擇,不過,從用戶體驗的角度來看,是簡單地鏈接到PDF,讓用戶知道他們將要點擊PDF鏈接...這樣,他們可以決定他們做什麼用它。

1

有使用服務器端技術的幾種方法:

您可以鏈接到一個.net/PHP頁面,提供文件下載,例如:

<a href="/ServeFile.aspx?filename=sample.pdf">download pdf</a> 

或顯示:

<a href="/sample.pdf">view pdf</a> 

如果使用iTextSharp的生成您的PDF,你可以添加以下到Response對象強制下載:

Response.AddHeader(
    "Content-Disposition", 
    "attachment; filename=itext.pdf" 
); 

或以下在同一個窗口中打開:

Response.AddHeader(
"Content-disposition", 
"inline; filename=itext.pdf"); 

用戶總是可以設置自己的Adobe Reader插件,隨時下載,在這種情況下,瀏覽器窗口顯示將無法正常工作。