2017-06-14 54 views
0

的數組的JSON元素的文件我有一個看起來像一個JSON響應:如何創建字節

{u'AllowExistingAttachmentToBeOverwritten': False, 
u'Name': u'Go-Daddy.pdf', 
u'AttachmentData': u'JVBERi0xLjQKJdPr6eEKMSAwIG9iago8PC9DcmVhdG9yIChNb3ppbGxhLzUuMCBcKFdpbmR... 
u'ItemIdAttachedTo': 91198711, 
u'Description': u''} 

如何將其轉換爲PDF文件?

我想:

with open(fileName, 'wb') as f: 
    f.write(result['AttachmentData']) 
    f.close() 

也試過:

with open(fileName, 'wb') as f: 
    f.write(result['AttachmentData'].encode()) 
    f.close() 

但在這兩種情況下,該文件被創建但是Adobe無法打開該文件。

+0

可能的重複https://stackoverflow.com/questions/2252726/how-to-create-pdf-files-in-python – Nurjan

+0

你檢查過pyfpdf嗎? https://www.blog.pythonlibrary.org/2012/07/10/an-intro-to-pyfpdf-a-simple-python-pdf-generation-library/ – TasosGlrs

回答

0

只需添加到@Zebromatz。您只是嘗試將文件數據解碼爲base64。 同時在json中發送時是否使用base64編碼進行驗證。 您可能的代碼如下。

import base64 

# bla bla bla 
# bla bla bla 

with open(fileName, 'wb') as f: 
    f.write(base64.b64decode(result['AttachmentData'])) 
    f.close() 

看看這是否可行。

+0

感謝您的詳細解答。像魅力一樣工作。 –

+0

請投票接受 – Haranadh

1

爲了完全回答你的問題,只要你從json文件接收到的數據在大多數情況下都是用BASE64 UTF8編碼的。爲了能夠得到它的內容或者將它保存到磁盤上,它應該是BASE64DECODED。

複製下面的網站使用了您的情況(TE得到BASE64ENCODED PDF): http://jsfiddle.net/eliseosoto/JHQnk/

按@埃倫-S其中pdf_base64是JSON響應收到的PDF格式的建議。

import base64 
pdf_base64 = 'JVBERi0xLj...' 
with open('test.pdf', 'wb') as f: 
    f.write(base64.b64decode(pdf_base64)) 
    f.close() 

該解決方案經過測試,其工作原理類似於魅力。

請參考下面的鏈接瞭解更多信息。 Embedding a File Attachment in JSON Object

+0

@ eran-s:我想你可能需要根據Zebromatz調用'decode'函數而不是'encode'。嘗試將行更改爲'f.write(base64.b64decode(result ['AttachmentData']))' – Haranadh