2016-04-28 48 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 –