From a7119543237c0d14db812ad0d6fd9f8d3b49acb7 Mon Sep 17 00:00:00 2001 From: NoDRM Date: Thu, 29 Dec 2022 19:52:08 +0100 Subject: [PATCH] PDF: Ignore invalid objid in non-strict mode, fixes #233 --- DeDRM_plugin/ineptpdf.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/DeDRM_plugin/ineptpdf.py b/DeDRM_plugin/ineptpdf.py index ea509ad..ab48130 100755 --- a/DeDRM_plugin/ineptpdf.py +++ b/DeDRM_plugin/ineptpdf.py @@ -1831,7 +1831,19 @@ class PDFDocument(object): try: obj = objs[i] except IndexError: - raise PDFSyntaxError('Invalid object number: objid=%r' % (objid)) + # This IndexError used to just raise an exception. + # Unfortunately that seems to break some PDFs, see this issue: + # https://github.com/noDRM/DeDRM_tools/issues/233 + # I'm not sure why this is the case, but lets try only raising that exception + # when in STRICT mode, and make it a warning otherwise. + if STRICT: + raise PDFSyntaxError('Invalid object number: objid=%r' % (objid)) + + print('Invalid object number: objid=%r' % (objid)) + print("Continuing anyways?") + print("If the resulting PDF is corrupted, please open a bug report.") + return None + if isinstance(obj, PDFStream): obj.set_objid(objid, 0) else: