HTTP 错误 404:启动 pdfbox 时未找到

HTTP Error 404: Not Found when starting up pdfbox

我不想在 python 中使用 pdfbox,我已使用此 https://pypi.org/project/python-pdfbox/ 安装,但是当我尝试 运行 p = pdfbox.PDFBox() 时出现以下错误.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/suyog/anaconda3/lib/python3.6/site-packages/pdfbox/__init__.py", line 81, in __init__
    self.pdfbox_path = self._get_pdfbox_path()
  File "/home/suyog/anaconda3/lib/python3.6/site-packages/pdfbox/__init__.py", line 57, in _get_pdfbox_path
    r = urllib.request.urlopen(pdfbox_url)
  File "/home/suyog/anaconda3/lib/python3.6/urllib/request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "/home/suyog/anaconda3/lib/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/home/suyog/anaconda3/lib/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/home/suyog/anaconda3/lib/python3.6/urllib/request.py", line 570, in error
    return self._call_chain(*args)
  File "/home/suyog/anaconda3/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/home/suyog/anaconda3/lib/python3.6/urllib/request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

知道如何在 ubuntu 中使用 PDFBOX 吗?

所以,现有的发行版似乎已经过时了:

  1. 最新版本是2.0.9,2.0.8的link已失效
  2. 代码试图通过下载当前版本不再存在的 md5 文件来验证包的完整性。

我冒昧地分叉了现有的回购协议并实施了补丁。可在 here.

中找到此包装器的工作版本

要使用 pip 从我的存储库安装,请按照发布的说明进行操作 here。或者,下载目录中的源和 运行 python setup.py install

运行 代码对我有用:

In [8]: import pdfbox
   ...: p = pdfbox.PDFBox()
   ...: 

In [9]: p
Out[9]: <pdfbox.PDFBox at 0x1046254e0>

添加到这个答案中,因为第一次安装它的人感觉不完整。

执行 pip install python-pdfbox 指向项目 https://pypi.org/project/python-pdfbox/,这是预期的行为。

使用说明指示像这样实例化 pdfbox 对象:p = pdfbox.PDFbox()

此时,我们中有些寻求答案的人可能会遇到此问题中所说的 HTTP 错误。

查看存储库,注意要下载的 pdfbox 版本是 hardcoded。这意味着任何 pip 安装此软件包的人都需要 "lucky" 足以让 apache pdfbox(这是一个 java 库)的版本与那个版本相同。

解决方案:

免责声明:我试图让这项工作适用于 Windows 10.

包 init 在 environment variable 上查找 pdfbox-app。如果找不到,它会尝试下载一个。因此错误。

  1. pdfbox apache 下载最新的 pdfbox-app-{version}.jar
  2. 为 PDFBOX 设置环境变量,例如 set PDFBOX=C:\Dev\pdfbox-app-2.0.11.jar
  3. 启动一个新的命令行并尝试:
    • import pdfbox
    • p = pdfbox.PDFBox()
    • p.extract_text("some_filename")

警告:extract_text() 无法识别带空格的文件名,不知何故...