我正在尝试使用 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/