2012-02-21 53 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插件,随时下载,在这种情况下,浏览器窗口显示将无法正常工作。