Skip to content

Commit 421b688

Browse files
committed
Gracefully handle missing xref object
Do not raise if no object exists at xref for method "Document.xref_object(xref)".
1 parent f95f0e5 commit 421b688

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/__init__.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6105,17 +6105,18 @@ def xref_object(self, xref, compressed=0, ascii=0):
61056105
"""Get xref object source as a string."""
61066106
if self.is_closed:
61076107
raise ValueError("document closed")
6108-
if g_use_extra:
6109-
ret = extra.xref_object( self.this, xref, compressed, ascii)
6110-
return ret
61116108
pdf = _as_pdf_document(self)
61126109
xreflen = mupdf.pdf_xref_len(pdf)
61136110
if not _INRANGE(xref, 1, xreflen-1) and xref != -1:
61146111
raise ValueError( MSG_BAD_XREF)
6115-
if xref > 0:
6116-
obj = mupdf.pdf_load_object(pdf, xref)
6117-
else:
6118-
obj = mupdf.pdf_trailer(pdf)
6112+
try:
6113+
if xref > 0:
6114+
obj = mupdf.pdf_load_object(pdf, xref)
6115+
else:
6116+
obj = mupdf.pdf_trailer(pdf)
6117+
except Exception:
6118+
message(f"No object at {xref=}")
6119+
return "null"
61196120
res = JM_object_to_buffer(mupdf.pdf_resolve_indirect(obj), compressed, ascii)
61206121
text = JM_EscapeStrFromBuffer(res)
61216122
return text
@@ -6166,7 +6167,7 @@ def xref_stream(self, xref):
61666167
xreflen = mupdf.pdf_xref_len( pdf)
61676168
if not _INRANGE(xref, 1, xreflen-1) and xref != -1:
61686169
raise ValueError( MSG_BAD_XREF)
6169-
if xref >= 0:
6170+
if xref > 0:
61706171
obj = mupdf.pdf_new_indirect( pdf, xref, 0)
61716172
else:
61726173
obj = mupdf.pdf_trailer( pdf)
@@ -6184,7 +6185,7 @@ def xref_stream_raw(self, xref):
61846185
xreflen = mupdf.pdf_xref_len( pdf)
61856186
if not _INRANGE(xref, 1, xreflen-1) and xref != -1:
61866187
raise ValueError( MSG_BAD_XREF)
6187-
if xref >= 0:
6188+
if xref > 0:
61886189
obj = mupdf.pdf_new_indirect( pdf, xref, 0)
61896190
else:
61906191
obj = mupdf.pdf_trailer( pdf)

0 commit comments

Comments
 (0)