python - 需要将base64字符串中的pdf转换为pdf文件

时间:2018-01-04 21:50:51

标签: python pdf base64

我有一个pdf作为base64字符串,我需要使用python将其写为文件。 我试过用这个:

transformed_normal = transpose(inverse(bone[i])) * normal;

但是创建的文件不是PDF。 我错过了什么?

非常感谢! :)

4 个答案:

答案 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)

扩展@Jebbyanswer using Base64(与@SmartManoj有相同的问题)

import base64
base64String = "JVBERi0xLjQKJeHp69MKMSAwIG9iago8PC9Qcm9kdWNlciAoU2tpYS9..."


with open("test.pdf", "wb") as f:
    f.write(base64.b64decode(base64string))