pdfplumber TypeError: must be str, not bytes

3 篇文章 0 订阅
当使用pdfplumber打开加密的PDF文件并传入密码时,出现TypeError,原因是密码需要是bytes类型。解决方案是将密码转换为bytes,如`password=bytes(234334,encoding=utf8)`,然后传递给pdfplumber.open()函数。
摘要由CSDN通过智能技术生成

使用 pdfplumber  读取pdf文件时跑出异常,代码入

pdfplumber.open(file_path, password=password)

异常信息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/python/python3/lib/python3.6/site-packages/pdfplumber/pdf.py", line 56, in open
    inst = cls(fp, **kwargs)
  File "/usr/local/python/python3/lib/python3.6/site-packages/pdfplumber/pdf.py", line 33, in __init__
    self.doc = PDFDocument(PDFParser(stream), password=password)
  File "/usr/local/python/python3/lib/python3.6/site-packages/pdfminer/pdfdocument.py", line 575, in __init__
    self._initialize_password(password)
  File "/usr/local/python/python3/lib/python3.6/site-packages/pdfminer/pdfdocument.py", line 599, in _initialize_password
    handler = factory(docid, param, password)
  File "/usr/local/python/python3/lib/python3.6/site-packages/pdfminer/pdfdocument.py", line 300, in __init__
    self.init()
  File "/usr/local/python/python3/lib/python3.6/site-packages/pdfminer/pdfdocument.py", line 307, in init
    self.init_key()
  File "/usr/local/python/python3/lib/python3.6/site-packages/pdfminer/pdfdocument.py", line 320, in init_key
    self.key = self.authenticate(self.password)
  File "/usr/local/python/python3/lib/python3.6/site-packages/pdfminer/pdfdocument.py", line 368, in authenticate
    key = self.authenticate_user_password(password)
  File "/usr/local/python/python3/lib/python3.6/site-packages/pdfminer/pdfdocument.py", line 374, in authenticate_user_password
    key = self.compute_encryption_key(password)
  File "/usr/local/python/python3/lib/python3.6/site-packages/pdfminer/pdfdocument.py", line 351, in compute_encryption_key
    password = (password + self.PASSWORD_PADDING)[:32]  # 1
TypeError: must be str, not bytes

刚开始一直以为是文件有问题。百度了一会无果。GitHub也有此类问题,但是说修复了,没看到方案,最后还是在博客园看到解决方案。

解决方案:

password = '234334'
pdfplumber.open(file_path, password=bytes(password,encoding='utf8'))

就是将密码字段变成一个 bytes 类型的传入。

原文链接:

https://www.cnblogs.com/moneymaster/p/14827867.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值