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

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

【问题讨论】:

  • 这真的不是问题,因为 xmlrpclib 会为你做这件事
  • 事实上,事实证明就是答案。当我问这个问题时,我只是不知道。

标签: python encoding base64 xml-rpc


【解决方案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()) 信用:stackoverflow.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 标准。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-26
        • 1970-01-01
        • 2018-06-13
        相关资源
        最近更新 更多