如何在 Python 中对 PDF 文件进行 base64 编码

Posted

技术标签:

【中文标题】如何在 Python 中对 PDF 文件进行 base64 编码【英文标题】:How to base64 encode a PDF file in Python 【发布时间】:2010-09-17 13:22:47 【问题描述】:

我应该如何对 PDF 文件进行 base64 编码,以便在 Python 中通过 XML-RPC 进行传输?

【问题讨论】:

这真的不是问题,因为 xmlrpclib 会为你做这件事 事实上,事实证明就是答案。当我问这个问题时,我只是不知道。 【参考方案1】:

如果你不想使用 xmlrpclib 的 Binary 类,你可以使用字符串的 .encode() 方法:

a = open("pdf_reference.pdf", "rb").read().encode("base64")

【讨论】:

这不是在编码之前通过调用read() 读取整个文件吗?这是它应该如何工作的吗?我无法想象用这个编码一个多 MB 或更大的文件。 @Shurane 这是一个使用字符串编码方法的单行示例。优化性能将是特定于应用程序的,留作练习。 这不再适用于 Python 3,试试这个:base64.b64encode(open('path/to/your.pdf', 'rb').read()) 信用:***.com/a/43084065/5125264【参考方案2】:

实际上,经过更多挖掘,看起来xmlrpclib 模块可能有我需要的部分,它是Binary 辅助类:

binary_obj = xmlrpclib.Binary(open('foo.pdf').read())

这是来自Trac XML-RPC documentation的示例


import xmlrpclib 
server = xmlrpclib.ServerProxy("http://athomas:password@localhost:8080/trunk/login/xmlrpc") 
server.wiki.putAttachment('WikiStart/t.py', xmlrpclib.Binary(open('t.py').read())) 

【讨论】:

【参考方案3】:

您可以使用base64 library,旧版界面来做到这一点。

【讨论】:

【参考方案4】:

看来您可以使用binascii 模块

binascii.b2a_base64(数据)

将二进制数据转换为base64编码的一行ASCII字符。返回值是转换后的行,包括换行符。数据长度最多为 57 以符合 base64 标准。

【讨论】:

以上是关于如何在 Python 中对 PDF 文件进行 base64 编码的主要内容,如果未能解决你的问题,请参考以下文章

在 Typescript 中对嵌入的 PDF 进行 Base64 解码

如何在 netsuite/freemarker 的高级 pdf/html 工作表中对列表进行分组?

如何在python中对没有标题的大型csv信号文件进行分类?

如何在 Python 中对大量字典进行排序而不加载到内存中

如何在 python 中对装饰器工厂输入进行单元测试

如何在 python 中对频谱中的图像进行编码?