From 1976dc6f30ba126332482b325bab230066f8e82b Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Thu, 26 Jan 2017 17:24:40 -0800 Subject: [PATCH] =?UTF-8?q?Fix=20issue=20#121=20=E2=80=9Cpop=20from=20empt?= =?UTF-8?q?y=20list=E2=80=9D=20(content=20stream=20parsing=20error)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ocrmypdf/pageinfo.py | 27 ++++++++++++++++++++++++--- tests/resources/README.rst | 3 +++ tests/resources/overlay.pdf | Bin 0 -> 38153 bytes tests/test_main.py | 5 +++++ 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 tests/resources/overlay.pdf diff --git a/ocrmypdf/pageinfo.py b/ocrmypdf/pageinfo.py index 1984511a..92c01faa 100644 --- a/ocrmypdf/pageinfo.py +++ b/ocrmypdf/pageinfo.py @@ -98,6 +98,22 @@ InlineSettings = namedtuple('InlineSettings', ContentsInfo = namedtuple('ContentsInfo', ['raster_settings', 'inline_images']) +def _normalize_stack(operations): + """Fix runs of qQ's in the stack + + For some reason PyPDF2 converts runs of qqq, QQ, QQQq, etc. into single + operations. Break this silliness up and issue each stack operation + individually so we don't lose count. + + """ + for operands, command in operations: + if re.match(br'Q*q+$', command): # Zero or more Q, one or more q + for char in command: # Split into individual bytes + yield ([], bytes([char])) # Yield individual bytes + else: + yield (operands, command) + + def _interpret_contents(contentstream): """Interpret the PDF content stream @@ -127,14 +143,19 @@ def _interpret_contents(contentstream): image_raster_settings = [] inline_images = [] - for op in operations: + for n, op in enumerate(_normalize_stack(operations)): operands, command = op if command == b'q': stack.append(ctm) if len(stack) > 32: - raise RuntimeError("PDF graphics stack overflow") + raise RuntimeError( + "PDF graphics stack overflow, command %i" % n) elif command == b'Q': - ctm = stack.pop() + try: + ctm = stack.pop() + except IndexError: + raise RuntimeError( + "PDF graphics stack underflow, command %i" % n) elif command == b'cm': ctm = matrix_mult( _matrix_from_shorthand(operands), ctm) diff --git a/tests/resources/README.rst b/tests/resources/README.rst index a8f29346..fd515361 100644 --- a/tests/resources/README.rst +++ b/tests/resources/README.rst @@ -79,6 +79,9 @@ under the terms of the license in LICENSE.rst. * - missing_docinfo.pdf - @jbarlow83 - PDF file with no /DocumentInfo section + * - overlay.pdf + - @maxandersen + - PDF file generated by PDFPen pro that triggered content stream parse errors Assemblies ========== diff --git a/tests/resources/overlay.pdf b/tests/resources/overlay.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f8a29dbdc115ea0601defe900271a1c5c9ae1f39 GIT binary patch literal 38153 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