我需要在网页上显示来自第三方的 PDF 文件。我有文档链接,因为它们出现在源页面上。不幸的是,这些链接都不是文档的实际链接,而是带有某些参数的 GET 请求,或其他间接引用,如下所示:
http://cdm.unfccc.int/UserManagement/FileStorage/SNM7EQ2RUD4IA0JLO3HCZ8BTK1VX5P
如果网站不强制Content-Disposition: attachment;
在响应标头中使用标签下载,如上所述,那么我可以通过以下方式轻松实现必要的显示:
<object width="90%" height="600" type="application/pdf"
data="http://cdm.unfccc.int/UserManagement/FileStorage/SNM7EQ2RUD4IA0JLO3HCZ8BTK1VX5P"
id="pdf_content">
<p>Can't seem to display the document. Try <a href="http://cdm.unfccc.int/UserManagement/FileStorage/SNM7EQ2RUD4IA0JLO3HCZ8BTK1VX5P">
downloading</a> it.</p>
<embed type="application/pdf" src="http://cdm.unfccc.int/UserManagement/FileStorage/SNM7EQ2RUD4IA0JLO3HCZ8BTK1VX5P"
width="90%" height="600" />
</object>
这在大多数浏览器中非常优雅地“站立”和“下降”。使用<object>
and<embed>
同时对我有用,而且,据我测试,不会影响我在下面描述的问题(告诉我我是否错了)。
当网站确实需要在 HTTP 标头中使用上述标记进行下载时,问题就开始了。例如,以下链接中的文档:
http://mer.markit.com/br-reg/PublicReport.action?getDocumentById=true&document_id=103000000000681
不会通过我上面显示的 HTML 结构显示。它优雅地落下,下载链接也很好,但我需要查看它!
我已经把头撞在墙上三天了,想不通。
也许有一种方法可以以某种方式捕获请求的标头并忽略它们,或者可能将“可见性”强制到 GET 请求中。
对于一般信息,这是 Ruby on Rails 应用程序的一部分,因此解决方案应该来自这些方面。我在这里没有给出任何 ROR 代码,因为它似乎不是问题的根源。
任何直接的解决方案都将受到祈祷,而其他任何解决方案 - 非常感谢。
我想到并丢弃评论的替代解决方案:
提前将所有这些文件下载到本地存储,然后从那里提供它们。
必要的存储容量约为 1TB 并且还在不断增长,因此将其存储在服务器上 对于小型商业 SaaS 来说会很昂贵。在可能需要的时候缓存这些文档。例如,当有人打开项目的页面时,后台进程会下载相关的 PDF,因此如果用户单击文档链接,他将获得刚刚下载到本地存储的文档。缓存可以保留几个小时/天,以防用户返回。
这可能是可行的,但如果用户群很大,那么此解决方案将与上述解决方案存在相同的问题。同样在这一刻,我不知道如何实现这种算法(非常初学者,你看)