TypeError:“ _ io.BytesIO”类型的对象没有len()

时间:2019-01-31 15:07:36

标签: python

这是我的代码,我试图在内存中下载pdf网址,然后尝试在第三方python软件包(PYmuPDF)中打开它。但它显示此错误。该如何解决?

我的代码

    URL = "https://d2u493yfhe2l4v.cloudfront.net/1922/signed_contract/1922_signed_contract.pdf"
    res = urllib.request.urlopen(URL)
    p = BytesIO(res.read())
    doc = fitz.open("pdf", p)

在这之后,它给出了这样的错误,但是根据fitz的文档,我认为我已经尝试正确了!有关打开内存文件的PymuPDF文档 https://pymupdf.readthedocs.io/en/latest/document/

>>> # from memory
>>> doc = fitz.open("pdf", mem_area)
>>> doc = fitz.open(None, mem_area, "pdf")
>>> doc = fitz.open(stream = mem_area, filetype = "pdf")

1 个答案:

答案 0 :(得分:0)

升级您的PYmuPDF版本。

您错过了文档中最重要的部分:    ->“在1.14.13版中进行了更改:现在还支持io.BytesIO”

或者,以下方法应该起作用:

    URL = "https://d2u493yfhe2l4v.cloudfront.net/1922/signed_contract/1922_signed_contract.pdf"
    res = urllib.request.urlopen(URL)
    p = bytearray(res.read())
    doc = fitz.open("pdf", p)