我有一个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 :(得分:1)
在大多数情况下,一旦从json文件接收到数据,就会在BASE64 UTF8中编码完全回答你的问题。为了能够获取它的内容或将其保存到磁盘,它应该是BASE64DECODED。
要在使用网站后复制您的情况(获取BASE64ENCODED PDF): http://jsfiddle.net/eliseosoto/JHQnk/
根据@ eran-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
答案 1 :(得分: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()
看看这是否有效。