You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:如何从禁用下载选项的pdf.js查看器窗口下载PDF文件

求助:如何从禁用下载选项的pdf.js查看器窗口下载PDF文件

别着急,我完全理解你现在的困扰——遇到这种限制确实头疼,我给你几个亲测有效的方法,你可以挨个试试:

  • 从开发者工具的Sources/Application面板找真实PDF链接
    有时候Network面板可能因为缓存或者请求方式的问题找不到目标资源,但你可以换个路径试试:

    1. 打开开发者工具(按F12或者右键页面选「检查」)
    2. 切换到「Sources」面板,展开「Page」目录,仔细找带有.pdf后缀的文件,或者找加载pdf.js的嵌套框架(iframe)里的资源
    3. 找到目标PDF资源后右键点击,选择「Open in new tab」,新标签页打开后就能直接下载了
    4. 如果Sources里没找到,试试「Application」面板,展开「Frames」->「Top」->「Documents」,里面大概率藏着PDF的真实地址
  • 用Console执行脚本直接触发下载
    pdf.js有个全局的PDFViewerApplication对象,里面存着文档的核心信息,我们可以利用它来绕开下载限制:

    1. 打开开发者工具的「Console」面板
    2. 粘贴这段代码并回车:
    if (typeof PDFViewerApplication !== 'undefined') {
      const pdfUrl = PDFViewerApplication.url;
      const downloadLink = document.createElement('a');
      downloadLink.href = pdfUrl;
      downloadLink.download = 'downloaded_document.pdf'; // 可以自定义你想要的文件名
      document.body.appendChild(downloadLink);
      downloadLink.click();
      document.body.removeChild(downloadLink);
    }
    

    这段代码会自动获取PDF的真实地址,创建一个隐藏的下载按钮并触发点击,直接开始下载。哪怕PDF是Blob格式的,这个方法同样有效。

  • 利用cURL带上登录Cookie下载
    因为网站有登录门户,wget没法直接复用登录状态,但我们可以借助浏览器的Cookie来绕过验证:

    1. 打开开发者工具的「Network」面板,刷新页面,找到任意一个和PDF加载相关的请求(或者随便找一个登录后发起的请求)
    2. 右键这个请求,选择「Copy」->「Copy as cURL」
    3. 打开终端,把复制的命令粘贴进去,最后加上 -o your_file_name.pdf(指定保存的文件名),回车运行就能下载了
      这个方法会自动带上你浏览器里的登录Cookie,所以能正常访问需要权限的PDF。
  • 备选:打印页面保存为PDF
    如果上面的方法都不行,可以试试打印功能作为兜底:

    1. 按Ctrl+P(Mac是Cmd+P)打开打印界面
    2. 在「目标打印机」里选择「Save as PDF」
    3. 如果网站禁用了打印,你可以回到开发者工具的「Elements」面板,找到页面的body元素,修改它的样式(比如把display: none或者visibility: hidden改成display: block),或者直接删除页面里的打印限制样式(通常在@media print规则里)

备注:内容来源于stack exchange,提问作者Parag

火山引擎 最新活动