我有一个pdf作为base64字符串,我需要使用python将其写为文件。 我试过用这个:
transformed_normal = transpose(inverse(bone[i])) * normal;
但是创建的文件不是PDF。 我错过了什么?
非常感谢! :)
答案 0 :(得分:4)
根据我的理解,base64decode只接受一个base64字符串,看起来你的字符串上有一些未编码的标题。
我会删除"数据:application / pdf; base64,"
在此处查看文档:{{3}}
当我过去使用它时,我只使用了编码的字符串。
答案 1 :(得分:1)
使用codecs.decode
函数编写它是否有效?
同样如Mark所说,您可以尝试删除字符串的data:application/pdf;base64,
部分,因为字符串的这一部分不会被解码。
import codecs
base64String = "JVBERi0xLjQKJeHp69MKMSAwIG9iago8PC9Qcm9kdWNlciAoU2tpYS9..."
with open("test.pdf", "wb") as f:
f.write(codecs.decode(base64string, "base64"))
答案 2 :(得分:1)
这不仅仅是base64编码数据,而是数据uri编码:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
还有另一篇关于堆栈溢出的帖子,询问如何在Python中解析这些字符串:
How to parse data-uri in python?
它的要点是删除标题(包括第一个逗号在内的所有内容):
theFile.write(base64.b64decode(base64String.split(",")[1:2]))
注意:我使用[1:2]而不是[1]因为如果列表中只有1个元素,它不会抛出异常,因为逗号后面没有任何内容(空数据)。
答案 3 :(得分:1)
扩展@Jebby的answer using Base64(与@SmartManoj有相同的问题)
import base64
base64String = "JVBERi0xLjQKJeHp69MKMSAwIG9iago8PC9Qcm9kdWNlciAoU2tpYS9..."
with open("test.pdf", "wb") as f:
f.write(base64.b64decode(base64string))