나는 pdfminer (https://pypi.python.org/pypi/pdfminer2)를 사용하여 pdf 변환을 시도하는 scrapy spider에서 작업 중입니다. 실제 PDF를 디스크에 저장하는 것에 관심이 없으므로 io.bytesIO 하위 클래스 https://docs.python.org/2/library/io.html#buffered-streams을 살펴 보도록 권유 받았습니다. Creating bytesIO object을 바탕으로, 나는 PDF 본체와 bytesIO 클래스를 초기화했지만, 지금은 데이터를 열고 따라 필요 예를 들어 지금까지 나는이 http://zevross.com/blog/2014/04/09/extracting-tabular-data-from-a-pdf-an-example-using-python-and-regular-expressions/에 따라 기본적인 사용 http://www.unixuser.org/~euske/python/pdfminer/programming.html 같은 :읽기 용으로 pdf bytestring 열기
in_memory_pdf = BytesIO(bytes(response.body))
in_memory_pdf.seek(0)
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
fp = file(in_memory_pdf, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
password = ""
maxpages = 0
caching = True
pagenos=set()
for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
interpreter.process_page(page)
fp.close()
device.close()
st = retstr.getvalue()
retstr.close()
print st
내가 실행 이걸 얻을 :
fp = file(in_memory_pdf, 'rb')
TypeError: coercing to Unicode: need string or buffer, _io.BytesIO found
처리를 위해이 PDF 바이 트린을 어떻게 열 수 있습니까? 내가 갖는 제안 된 변경 후
:
2016-10-17 23:59:35 [root] DEBUG: exec: ET
2016-10-17 23:59:35 [root] DEBUG: nexttoken: (2819L, /'Q')
2016-10-17 23:59:35 [root] DEBUG: do_keyword: pos=2819L, token=/'Q', stack=[]
2016-10-17 23:59:35 [root] DEBUG: add_results: ((2819L, /'Q'),)
2016-10-17 23:59:35 [root] DEBUG: nextobject: (2819L, /'Q')
2016-10-17 23:59:35 [root] DEBUG: exec: Q
Traceback (most recent call last):
File "C:\\site-packages\twisted\internet\defer.py", line 588, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "C:\j1\spiders\j1_spider.py", line 235, in parse_pdf_to_html
interpreter.process_page(page)
File "C:\\site-packages\pdfminer\pdfinterp.py", line 835, in process_page
self.device.end_page(page)
File "C:\\site-packages\pdfminer\converter.py", line 53, in end_page
self.receive_layout(self.cur_item)
File "C:\\site-packages\pdfminer\converter.py", line 206, in receive_layout
render(ltpage)
File "C:\\site-packages\pdfminer\converter.py", line 196, in render
render(child)
File "C:\\site-packages\pdfminer\converter.py", line 196, in render
render(child)
File "C:\\site-packages\pdfminer\converter.py", line 196, in render
render(child)
File "C:\\site-packages\pdfminer\converter.py", line 198, in render
self.write_text(item.get_text())
File "C:\\site-packages\pdfminer\converter.py", line 189, in write_text
self.outfp.write(text)
TypeError: unicode argument expected, got 'str'
'fp = file (in_memory_pdf, 'rb')'를'fp = in_memory_pdf'로 변경해보십시오. –
부분적으로 작동했습니다. 편집 – user61629