首页 > 解决方案 > 如何将 MIME 64 文档转换为字符串?

问题描述

我正在从返回具有以下结构的 JSON 对象的 API 中检索数据:

{ 
  "status":"OK", 
  "text":{ 
    "doc_id":647508, 
    "bill_id":502329, 
    "date":"2012-05-23", 
    "type":"Enrolled", 
    "mime":"application/rtf", 
    "doc":"MIME 64 Encoded Document” 
  } 
} 

其中编码文档是 PDF 文件。这是我正在使用的 PDF 示例:https ://legiscan.com/WA/text/HB1531/id/1473804/Washington-2017-HB1531-Introduced.pdf 。我正在尝试将编码文件读入字符串对象。到目前为止,我已经能够通过将响应转换为字节然后读取 pdf 来做到这一点:

import PyPDF2
import base64

with open("sample.pdf", "wb") as f:
        inp_str = response.json()['text']['doc'].encode('utf-8')
        f.write(base64.b64decode(inp_str))
    with open('sample.pdf', "rb") as f:
        pdf = PyPDF2.PdfFileReader(f)

感觉这不是处理多个文档的一种非常有效的方式。我尝试了一个相关的问题(是否可以将 pdf 字节直接输入 PyPDF2 而不是先制作 PDF 文件):

read_pdf = PyPDF2.PdfFileReader(io.BytesIO(response.json()['text']['doc'].encode()))

但我总是得到错误PdfReadError: Could not read malformed PDF file

有没有办法做到这一点?

标签: pythonpypdf2

解决方案


推荐阅读