簡體   English   中英

在瀏覽器中用 blob 下載 PDF

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM