[英]Download PDF in browser with blob
我不太清楚如何從谷歌電子表格 PDF 導出 Web 鏈接下載 PDF。 我為這個案例生成了一個測試電子表格。
我知道我需要對 blob 實施 encodeURIComponent 和/或“Buffer.from”,但無論我怎么做,它只會為我下載損壞的 PDF。
這是我目前最原始的形式。 感謝您的支持!
節點JS:
const fetch = require('node-fetch');
var url = "https://docs.google.com/spreadsheets/d/1fLjKASR_g5wsvOjjJi6RclqMVd2o_1On-OfimXtId4E/export?exportFormat=pdf&format=pdf&size=A4&fzr=true&gid=477517973&sheetnames=false&printtitle=false&pagenumbers=false&gridlines=false&portrait=true&fitw=true&fith=true&top_margin=0.20&bottom_margin=0.20&left_margin=0.20&right_margin=0.20";
let blob = await fetch(url).then(r => r.blob());
// then send blob variable to javascript
Javascript:
function downloadURI(name) {
var uri = 'data:application/pdf;base64,' + blob;
var link = document.createElement('a');
link.download = name;
link.href = uri;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
delete link;
}
downloadURI("test"+".pdf")
我認為來自var uri = 'data:application/pdf;base64,' + blob;
在你的腳本中,在這種情況下,需要將下載的數據轉換為 base64。雖然我不確定Node JS:
和Javascript:
之間的腳本之間的關系,但在你的情況下,如何進行以下修改?
let blob = await fetch(url).then(r => r.blob());
let buf = await fetch(url).then((r) => r.arrayBuffer());
const data = Buffer.from(buf).toString("base64");
這樣,您可以按如下方式使用data
。
var uri = 'data:application/pdf;base64,' + data;
作為附加信息,例如,如果您希望僅使用 Javascript 將電子表格下載為 PDF 文件,您也可以使用以下腳本。 但是,在這種情況下,電子表格需要公開共享。 請注意這一點。
async function downloadURI(name) { var url = "https://docs.google.com/spreadsheets/d/1fLjKASR_g5wsvOjjJi6RclqMVd2o_1On-OfimXtId4E/export?exportFormat=pdf&format=pdf&size=A4&fzr=true&gid=477517973&sheetnames=false&printtitle=false&pagenumbers=false&gridlines=false&portrait=true&fitw=true&fith=true&top_margin=0.20&bottom_margin=0.20&left_margin=0.20&right_margin=0.20"; let blob = await fetch(url).then((r) => r.blob()); var f = new FileReader(); f.readAsDataURL(blob); f.onload = d => { var uri = d.target.result; var link = document.createElement('a'); link.download = name; link.href = uri; document.body.appendChild(link); link.click(); document.body.removeChild(link); delete link; } } downloadURI("test"+".pdf")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.