Closed maxpmaxp closed 4 years ago
Same issue here. See attached pdf/ua document. PDFUA-Reference-09_(English-invoice).pdf
Similar issue here, trying to load a big PDF document (~100 pages). Unfortunately I can't share the document, but I'm guessing the same issue would arise with other big documents.
>>> from pdfreader import SimplePDFViewer
>>> f = open("big-document.pdf","rb")
>>> viewer = SimplePDFViewer(f)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/viewer/simple.py", line 74, in __init__
super(TextOperatorsMixin, self).__init__(*args, **kwargs)
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/viewer/pdfviewer.py", line 182, in __init__
self.doc = PDFDocument(fobj)
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/document.py", line 31, in __init__
self.root = self.obj_by_ref(self.trailer.root)
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/document.py", line 80, in obj_by_ref
obj = self.parser.locate_object(objref.num, objref.gen)
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/document.py", line 455, in locate_object
_ = self.next_brute_force_object()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/document.py", line 467, in next_brute_force_object
obj = self.body_element() # can be either indirect object, startxref or trailer
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/document.py", line 258, in body_element
obj = self.indirect_object()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/document.py", line 484, in indirect_object
obj = super(RegistryPDFParser, self).indirect_object()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/document.py", line 57, in indirect_object
val = self.object()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 632, in object
val = method()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 341, in dictionary_or_stream_or_hexstring
val = self._stream(val)
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/document.py", line 478, in _stream
d['Length'] = self.locate_object(length.num, length.gen)
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/document.py", line 455, in locate_object
_ = self.next_brute_force_object()
...
_ = self.next_brute_force_object()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/document.py", line 467, in next_brute_force_object
obj = self.body_element() # can be either indirect object, startxref or trailer
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/document.py", line 258, in body_element
obj = self.indirect_object()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/document.py", line 484, in indirect_object
obj = super(RegistryPDFParser, self).indirect_object()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/document.py", line 57, in indirect_object
val = self.object()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 632, in object
val = method()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 337, in dictionary_or_stream_or_hexstring
val = self.dictionary()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 386, in dictionary
res[key] = self.object()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 632, in object
val = method()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 656, in numeric_or_indirect_reference
val = self.indirect_reference()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 644, in indirect_reference
num = self.non_negative_int()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 268, in non_negative_int
n = self.numeric()
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 238, in numeric
while self.is_digit:
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 104, in is_digit
return self.current is not None and self.current in b'0123456789'
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/parsers/base.py", line 22, in current
return self.buffer.current
File "/Users/me/Library/Python/3.7/lib/python/site-packages/pdfreader/buffer.py", line 150, in current
if self.index >= len(self.data):
RecursionError: maximum recursion depth exceeded while calling a Python object
@tchlux Could you attach the file please?
Fixed in v0.1.5
response-0-2.pdf