Ошибка при чтении PDF на странице SharePoint с использованием Python 3.7 - PullRequest
0 голосов
/ 12 апреля 2020

Я использую «PyPDF2», «urllib.request», «io» и «ques_ntlm »+« HttpNtlmAuth »для доступа к странице компании SharePoint 2010 и чтения и печати PDF-файла в виде строки.

Я уже добился успеха, прочитав и распечатав PDF-файл как в PDF-файле, так и в интерактивном PDF-документе, но с SharePoint 2010 кажется, что он не работает.

Это мой код:

import urllib.request
import requests
import io
import PyPDF2 as p2
from requests_ntlm import HttpNtlmAuth

url = "http://company.net/sites/folder1/folder2/folder3/folder4/sample.pdf"

response = requests.get(url, auth=HttpNtlmAuth("USER@MAIL.COM","PASSWORD"))

print(response.status_code)
print(response.content)

open = urllib.request.urlopen(response.content).read()

PDFfile = io.BytesIO(open)

pdfread = p2.PdfFileReader(PDFfile)
NrPages = pdfread.getNumPages()

for i in range(NrPages):
    x = pdfread.getPage(i)
    y = str(x.extractText())
    print(y)

Что касается "status_code", я получил код HTTP 200, поэтому я предполагаю, что доступ был принят. При печати «response.content» я получаю что-то вроде этого:

b'%PDF-1.3\r%\xff\xff\xff\xff\r1 0 obj\r<<\r/Title (\xfe\xff\x00D\x00S\x00-\x00T\x00B\x00L\x00-\x00M\x00A\x00X\x00-\x00D\x00P\x00L\x00S\x00-\x00S\x00C\x00-\x001\x004\x000\x000\x000\x00-\x001\x001\x004\x000\x000\x00-\x001\x001\x000\x00 \x00k\x00s\x00i\x00-\x00M\x00i\x00n\x00.\x00 \x00W\x00T\x00 \x009\x000\x00%\x00-\x00\\(\x00U\x00S\x00C\x00 \x00U\x00n\x00i\x00t\x00s\x00\\)\x00.\x00x\x00l\x00s\x00m)\r/Producer (Amyuni PDF Converter version 4.5.2.7)\r/CreationDate (D:20140624164324-03\'00\')\r>>\rendobj\r7 0 obj\n<< /Length 8 0 R /Filter /FlateDecode >>\nstream\nx\x9c\xb5Z[s\x9bH\x16~O\x95\xffC\xbfL\x8d\xb3\x15a\xfaB\xd3\xbc\xad/J\xc6\x93\xf82\x96\xbc\xaeT\xf9\x85H\xc8f#!\x05\xe1M\xfc\xa7\xb6\xf6\'\xee9M\x03\x8d\xa0\x91\xb23[S\xe3H\xa2\xf9\xf8\xce\xfd\x9cn\xbe\x1dQ\xe2\xc3\x7f\x94P\xe9E\x0c>\xcdVG\xd9\x11\xfe\xe4{\xd2g$\x7f:\x12\xa1\'\x05\tT\xe0\x85\x8c\x88Px\x94\x91\x11\xe5\x9eT$O\x8e\x16\x7f\xc3\xf5\x9e\x88$\xa9\xfe*\x9fZ\xf7\x85\xcc\xa3\xd2q\x1f%\xf5\xb2@y

И так далее, и так далее ... что я считаю логичным.

Но при запуске остальных код (urllib.request.urlopen + PDF read) Я получаю следующее:

AttributeError: 'bytes' object has no attribute 'timeout'

Что вы, ребята, думаете, чего здесь не хватает? Возможно, при чтении файла не хватает декодирования. Очень нужна помощь.

Спасибо!

1 Ответ

0 голосов
/ 21 апреля 2020

urllib.request.urlopen метод принимает только URL или объект запроса. Он не может передавать байты в этот метод.

Вы можете попробовать код ниже:

import urllib.request
import requests
import io
import PyPDF2 as p2
from requests_ntlm import HttpNtlmAuth

url = "http://sp10/Shared%20Documents/test.pdf"

response = requests.get(url, auth=HttpNtlmAuth("CONTOSO\Administrator","password"))

print(response.status_code)

PDFfile = io.BytesIO(response.content)

pdfread = p2.PdfFileReader(PDFfile)

NrPages = pdfread.getNumPages()

for i in range(NrPages):
  x = pdfread.getPage(i)
  y = str(x.extractText())
  print(y)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...