javascript - 如何下载并保存在 PhantomJS 的响应 header 中作为附件接收的 PDF 文件?

标签 javascript phantomjs

我正在尝试使用 PhantomJS 下载一些 PDF 文件。没有用于下载该 PDF 的直接 URL,因为当我单击提交按钮时它会调用一些内部 JavaScript 函数。

这是我用来下载 PDF 文件的代码:

 page.open(url, function(status){
     page.evaluate(function(){
         document.getElementById('id').click();
     });
 });
 page.onResourceReceived = function(request){
     console.log('Received ' + JSON.stringify(request, undefined, 4));
 };

“id”是提交按钮的元素 id。这里的问题是,即使我得到的响应(在 onResourceReceived 回调中)为 JSON 格式,但我无法将附件保存为某个 PDF 文件。

当我运行上面的代码时,我得到以下 JSON 字符串输出:

 Received {
    "contentType": "application/pdf",
    "headers": [
        // Some other headers.
        {
            "name": "Content-Type",
            "value": "application/pdf"
        },
        {
            "name": "content-disposition",
            "value": "attachment; filename=FILENAME.PDF"
        },
    ],
    "id": 50,
    "redirectURL": null,
    "stage": "end",
    "status": 200,
    "statusText": "OK",
    "url": "http://www.someurl.com"
}

请推荐仅使用 PhantomJS 的解决方案。谢谢!

最佳答案

一般来说,我会建议停止使用 PhantomJS 并查看 Headless Chrome . Here是一篇关于这个主题的好文章。我正在使用 https://github.com/puppeteer/puppeteer 为此目的,它是一个易于集成的解决方案。

关于javascript - 如何下载并保存在 PhantomJS 的响应 header 中作为附件接收的 PDF 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31565421/

相关文章:

node.js - NodeJS 加载网站并在渲染之前从页面中删除元素

javascript - 如何让 jQuery 在当前选项卡而不是新选项卡中打开页面

javascript - Marker 的 Z-index 高于 Infobox

javascript - 调用 Karma/Jasmine 的 ANT 任务

phantom.js 与 zombie .js 的性能对比

javascript - 使用 PhantomJS 循环并单击 querySelectorAll 列表

javascript - 在一个移动市场上上传应用程序时出错

javascript - 试图在我的页面上加载 Bootstrap 日历。获取 Uncaught Error

javascript - 如果浏览器在触摸设备上,如何更改图像?

mongodb - 如何使用 PhantomJS 连接到 MongoDB