如何在网上下载pdf
How to download pdf on web
重要提示:我使用python。
我使用 reportlab 在服务器(flask)上创建了一个 pdf,然后我通过方法 str = canvas.getpdfdata()
得到了一个字符串。我可以使用 f = open('result.pdf', 'wb')
和 f.write(str)
将其保存为 pdf。
现在我想在网上下载这个pdf,但是我不想在服务器上创建一个pdf文件,所以我把字符串发送到web上,想用js创建文件并下载它.
我试过这样使用js代码:(saveAs
函数在FileSaver.js
中,可以在github上找到)
var blob = new Blob([{{ str }}], {type: "application/pdf"});
saveAs(blob, "result.pdf");
它抛出错误 Uncaught SyntaxError: Unexpected identifier
,我尝试将字符串编码更改为十六进制和 base64,但没有帮助。
你能帮帮我吗?或者您能告诉我一种无需在服务器上创建文件即可创建和下载此 pdf 的方法吗?
正如在 this SO 问题的答案中所读,您需要先将二进制数据转换为 ByteArray:
var byteArray = new Uint8Array(hexdata.length/2);
for (var x = 0; x < byteArray.length; x++){
byteArray[x] = parseInt(hexdata.substr(x*2,2), 16);
}
var blob = new Blob([byteArray], {type: "application/octet-stream"});
此处示例:http://jsfiddle.net/mowglisanu/15h9o3d5/
而且 this 问题问的和你完全一样。
重要提示:我使用python。
我使用 reportlab 在服务器(flask)上创建了一个 pdf,然后我通过方法 str = canvas.getpdfdata()
得到了一个字符串。我可以使用 f = open('result.pdf', 'wb')
和 f.write(str)
将其保存为 pdf。
现在我想在网上下载这个pdf,但是我不想在服务器上创建一个pdf文件,所以我把字符串发送到web上,想用js创建文件并下载它.
我试过这样使用js代码:(saveAs
函数在FileSaver.js
中,可以在github上找到)
var blob = new Blob([{{ str }}], {type: "application/pdf"});
saveAs(blob, "result.pdf");
它抛出错误 Uncaught SyntaxError: Unexpected identifier
,我尝试将字符串编码更改为十六进制和 base64,但没有帮助。
你能帮帮我吗?或者您能告诉我一种无需在服务器上创建文件即可创建和下载此 pdf 的方法吗?
正如在 this SO 问题的答案中所读,您需要先将二进制数据转换为 ByteArray:
var byteArray = new Uint8Array(hexdata.length/2);
for (var x = 0; x < byteArray.length; x++){
byteArray[x] = parseInt(hexdata.substr(x*2,2), 16);
}
var blob = new Blob([byteArray], {type: "application/octet-stream"});
此处示例:http://jsfiddle.net/mowglisanu/15h9o3d5/
而且 this 问题问的和你完全一样。