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: