2016-04-28 50 views
0

重要提示:我使用python如何在网上下载pdf

我使用reportlab在服务器(瓶)上创建pdf,并通过methond 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的方法,而不需要在服务器上创建一个文件?

回答

0

正如答案念给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问题是问同样的事情和你一样。

+0

真的很感谢!!!这是我的错,我犯了一个愚蠢的错误......当Web获取服务器数据时,它应该使用'var str =“{{data}}”',但我使用'var str = {{data}}'.. .T_T –