能否通过纯html下载pdf文件?

3

我正在使用链接标签打开一个pdf文件。当点击该链接时,pdf文件会直接打开。是否有可能通过html下载并保存pdf文件到我的系统中?

7个回答

4

简短的回答是:不行。PDF处理完全取决于客户端软件,从Web浏览器到PDF阅读器都是如此。您的服务器可以提供提示,供浏览器使用(或不使用),但您不能仅使用纯HTML来实现。

无论如何,您可能可以配置Web服务器以发送适当的HTTP标头。如果您使用的是Apache,则可以使用一个.htaccess文件:

<FilesMatch "\.(?i:pdf)$">
  ForceType application/pdf
  Header set Content-Disposition attachment
</FilesMatch>

如果您将application/pdf替换为application/octet-stream,如果已安装(但不保证)可能会绕过PDF插件。
其他Web服务器需要不同的配置。

我正在使用aspnet。我应该在web.config中添加吗? - Developer404

3
您应该更改服务器发送给客户端的标头,并添加类似以下内容的内容。
Content-Disposition: attachment; filename="downloaded.pdf"

这可以通过代理php脚本或配置您的web服务器来完成。


1
提到“文件名”做得好。当向诸如http://example.com/download.php?stuff.pdf这样的URL发出HTTP请求时,弹出“另存为”对话框并希望将下载的PDF文件保存为download.php时,这真是令人恼火。在这些情况下,请务必发送filename=stuff.pdf - ndim

2

仅使用纯HTML,您无法强制此行为。

服务器需要发送Content-Disposition:attachment;filename=x.pdf标题才能实现这一点。


1
Tested on Chrome and Firefox, works like a charm !
其中,newfilename 是建议用户保存文件的文件名。如果您将其留空,则默认为服务器端的文件名,如下所示:
下载 PDF 文件

你确定你能下载PDF文件吗? - jackD

0

我在网上看到过Alvaro的技巧被发布在不同的地方

<FilesMatch "\.(?i:pdf)$">
  ForceType application/pdf
  Header set Content-Disposition attachment
</FilesMatch>

但是出于某种原因,当我将这个添加到.htaccess文件中时,会出现500个内部服务器错误。有人知道为什么会发生这种情况吗?

更新:已经解决了 - 您需要安装Apache的头模块:

# a2enmod headers

0

我认为你无法通过HTML完成这个任务... 这需要通过头文件来完成, 你可以通过后端语言或Apache头文件进行修改


0

我知道这是一个老问题,但值得一提的是,现代许多浏览器现在支持对于链接的 下载 属性,可以像这样使用:

<a href="/path/to/mydownload.pdf" download> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接