无法导入名称“PdfFileReader”

问题描述

这个错误是什么意思?我应该安装一些东西吗?

    from pdf import PdfFileReader,PdfFileWriter
ImportError: cannot import name 'PdfFileReader'

我在编译以下脚本时得到了它:

import sys

if __name__ == '__main__' and len(sys.argv) > 5 and sys.argv[1][-3:].upper() == 'PDF':
  original = sys.argv[1]
  target   = original[:-4] + '.cropped.pdf'
  left     = int(sys.argv[2])
  top      = int(sys.argv[3])
  right    = int(sys.argv[4])
  bottom   = int(sys.argv[5])

  from pyPdf import PdfFileWriter,PdfFileReader
  pdf = PdfFileReader(file(original,'rb'))
  out = PdfFileWriter()
  for page in pdf.pages:
    page.mediaBox.upperRight = (page.mediaBox.getUpperRight_x() - right,page.mediaBox.getUpperRight_y() - top)
    page.mediaBox.lowerLeft  = (page.mediaBox.getLowerLeft_x()  + left,page.mediaBox.getLowerLeft_y()  + bottom)
    out.addPage(page)    
  ous = file(target,'wb')
  out.write(ous)
  ous.close()

else:
  print ('EXAMPLE: pdfcrop.py original.pdf 20 30 20 40')

解决方法

解决方案: pyPdf 库已过时,无法按预期工作。使用 PyPDF4 库修复了过时库造成的所有问题。

错误ImportError: cannot import name 'PdfFileReader' 表示存在导入错误。

安装pip

Pip 是 Python 的软件包安装程序,需要安装 Python 软件包。

  1. 如果您正在使用 Python 3.4,请不要担心; pip 已预先安装。
  2. 如果您使用的 Python 3 版本早于 Python 3.4,则可以找到官方 pip 安装说明here
  • 注意:您可以通过在终端中输入 python --version 来了解您正在运行的 Python 版本

安装 PyPDF4 软件包

安装 pip 后,您现在可以安装 PyPDF4 包。这就像在终端中输入 pip install pdf 一样简单。

完成此操作后,您将成功为 Python 安装 PyPDF4 包。

其他错误来源

但是,很可能您已经安装了该软件包。您的错误也可能是您试图从不存在的库中导入函数,或者库本身包含错误。