我之前从未考虑过这个问题,但有没有办法控制用户点击PDF文件链接时会发生什么?
我的老板想提供两个链接来执行以下操作: 1.在浏览器中查看此PDF 2.下载PDF
有办法做到这一点吗?我不考虑这些事情,大多数现代浏览器都会在浏览器中打开PDF。如果我想下载它,我右键单击下载。有什么方法可以强迫行动吗?
由于
答案 0 :(得分:3)
您可以链接到资源,也可以将数据流式传输到浏览器。这是你们唯一的两个选择。
如果链接到文件:<a href="file.pdf">
是否在浏览器中打开,则完全取决于最终用户的浏览器和操作系统首选项。
您可以通过将文件流式传输到浏览器来强制下载文件,这通常会触发浏览器的save as
对话框。
但是,从用户体验的角度来看,最好的选择是简单地链接到PDF并让用户知道他们即将点击PDF链接......这样他们就可以决定他们用它做什么了。
答案 1 :(得分: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插件设置为始终下载,在这种情况下,浏览器窗口显示将无效。
答案 2 :(得分:1)
PDF的显示方式基于用户的浏览器版本和配置。例如,Chrome默认包含PDF查看器,但用户可以更改插件的行为(自动打开PDF,禁用,询问用户)。
执行此操作的一种方法是设置ContentType和Content-Disposition,以便浏览器知道如何处理请求。例如,在ASP.NET中你可以这样做:
Response.ContentType =“application / pdf”;
Response.AddHeader(“Content-Disposition”,“attachment; filename = filename.pdf”);
披露:我从this article
劫持了此代码如果这有帮助,请告诉我。