Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/textcode/pdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,5 @@ def get_text_lines(location, max_pages=5):
interpreter.process_page(page)
if max_pages and page_num == max_pages:
break
extracted_text.seek(0)
return extracted_text.readlines()
extracted_text.seek(0)
return extracted_text.readlines()
Comment on lines 43 to +47
Binary file added tests/textcode/data/pdf/multi_page.pdf
Binary file not shown.
27 changes: 27 additions & 0 deletions tests/textcode/test_pdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,33 @@ def get_text(location):

assert result == expected

def test_get_text_lines_extracts_all_pages_up_to_max_pages(self):
# regression test: text extraction must not stop after the first page
test_file = self.get_test_loc('pdf/multi_page.pdf')
result = pdf.get_text_lines(test_file)
text = b''.join(result)
assert b'This is page 1 of a multi-page test document.' in text
assert b'This notice is on page 2.' in text
assert b'The last page 5 of this test document.' in text
# the default max_pages=5 must still be honored
assert b'Page 6' not in text

def test_get_text_lines_returns_lines_when_max_pages_is_one(self):
# regression test: reaching max_pages must not return None
test_file = self.get_test_loc('pdf/multi_page.pdf')
result = pdf.get_text_lines(test_file, max_pages=1)
assert result
text = b''.join(result)
assert b'This is page 1 of a multi-page test document.' in text
assert b'page 2' not in text

def test_get_text_lines_extracts_all_pages_when_max_pages_is_zero(self):
test_file = self.get_test_loc('pdf/multi_page.pdf')
result = pdf.get_text_lines(test_file, max_pages=0)
text = b''.join(result)
assert b'Page 6 is beyond the default max_pages limit.' in text
assert b'Page 7 is also beyond the default max_pages limit.' in text

def test_pdfminer_can_parse_faulty_broadcom_doc(self):
# test for https://github.com/euske/pdfminer/issues/118
test_file = self.get_test_loc('pdf/pdfminer_bug_118/faulty.pdf')
Expand Down
Loading