【问题标题】:Python pyPdf issue downloading pdfPython pyPdf问题下载pdf
【发布时间】:2018-02-08 15:31:19
【问题描述】:

我很难将互联网上的 pdf 文件读入 python PdfFileReader 对象。

我的代码适用于第一个 url,但它不适用于第二个,我不知道如何修复它。

我可以看到,在第一个示例中,url 指的是 .pdf 文件,而在第二个 url 中,pdf 在 html 正文中作为“应用程序数据”返回。

所以我认为这可能是问题所在。有谁知道如何修复它,以便代码也适用于第二个网址?

from pyPdf import PdfFileWriter, PdfFileReader
from io import BytesIO
import requests

def test(url,filename):
  response=requests.get(url)
  pdf_file = BytesIO(response.content)
  existing_pdf = PdfFileReader(pdf_file)

  page = existing_pdf.getPage(0)

  output = PdfFileWriter()
  output.addPage(page)

  outputStream = file(filename, "wb")
  output.write(outputStream)
  outputStream.close()


test('https://s21.q4cdn.com/374334112/files/doc_downloads/test.pdf','works.pdf')
test('https://eservices.minfin.fgov.be/mym-api-rest/finform/pdf/2057','crashes.pdf')

这是我第二次调用测试函数时的堆栈跟踪:

D:\scripts>test.py
Traceback (most recent call last):
  File "D:\scripts\test.py", line 21, in <module>
    test('https://eservices.minfin.fgov.be/mym-api-rest/finform/pdf/2057','crashes.pdf')
  File "D:\scripts\test.py", line 10, in test
    page = existing_pdf.getPage(0)
  File "C:\Python27\lib\site-packages\pyPdf\pdf.py", line 450, in getPage
    self._flatten()
  File "C:\Python27\lib\site-packages\pyPdf\pdf.py", line 596, in _flatten
    catalog = self.trailer["/Root"].getObject()
  File "C:\Python27\lib\site-packages\pyPdf\generic.py", line 480, in __getitem__
    return dict.__getitem__(self, key).getObject()
  File "C:\Python27\lib\site-packages\pyPdf\generic.py", line 165, in getObject
    return self.pdf.getObject(self).getObject()
  File "C:\Python27\lib\site-packages\pyPdf\pdf.py", line 655, in getObject
    raise Exception, "file has not been decrypted"
Exception: file has not been decrypted

【问题讨论】:

  • 看来第二个链接的回复是一个 base64 编码的字符串,我必须以某种方式读入 BytesIO 对象。

标签: python pdf pypdf


【解决方案1】:

我找到了解决方案。我导入的是 PyPDF2 而不是 pyPdf,所以这可能是一个错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多