如何使用书签在网页中保存PDF文件

How do I save PDF files within a web using a bookmarklet?

本文关键字:保存 PDF 文件 网页 何使用 书签      更新时间:2023-09-26

我正在构建一个大型公司内部使用的社交书签应用程序。

它有一个简单的JavaScript bookmarklet,目前运行良好- bookmarklet允许用户保存来自流行浏览器的书签。它可以很好地处理公共网络链接,而且与浏览器无关。最接近的bookmarklet示例如下:

http://delicious.com/help/bookmarklets

当我在浏览器(比如Chrome/Mac)中查看PDF文件时:

http://website.com/file.pdf

这当然不起作用——因为没有办法在浏览器中查看的PDF顶部注入HTML标记。

在bookmarklet中使指向非http资源的链接工作的最佳方法是什么?我是否需要创建并注入某种不可见的iframe然后获取父框架及其URL来保存它?

我不知道所有的浏览器,但在Firefox中,您可以在PDF文件和图像上注入Javascript和iframe。这是因为图像和PDF文件实际上显示在Firefox生成的特殊虚拟HTML页面中。我想Chrome可能也是一样的。

你可以通过打开PDF或图像,然后打开Web控制台(必须使用菜单,在这种情况下不能使用CTRL+SHIFT+K)来获得JS控制台,然后键入document.documentElement.outerHTML来查看实际的虚拟HTML,其中嵌入了PDF或图像。

为了检测我不能添加iFrame或其他HTML到页面的情况,我可能会测试它的文档。documentElement,或者可能是其他DOM元素。

对于任何浏览器或文件类型组合,这将不起作用,或者如果我只是想让事情更简单,我会在我的服务器上打开一个新的选项卡或窗口,并将页面标题和位置传递到该页面,如http://mysocialsite.tld/add-bookmark?title=file.pdf&location=http://anothersite.tld/file.pdf。我的服务器上的那个页面将允许用户完成书签过程。