Skip to content

Commit b3eacb0

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 cb4c71e commit b3eacb0

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
@@ -6091,17 +6091,18 @@ def xref_object(self, xref, compressed=0, ascii=0):
60916091
"""Get xref object source as a string."""
60926092
if self.is_closed:
60936093
raise ValueError("document closed")
6094-
if g_use_extra:
6095-
ret = extra.xref_object( self.this, xref, compressed, ascii)
6096-
return ret
60976094
pdf = _as_pdf_document(self)
60986095
xreflen = mupdf.pdf_xref_len(pdf)
60996096
if not _INRANGE(xref, 1, xreflen-1) and xref != -1:
61006097
raise ValueError( MSG_BAD_XREF)
6101-
if xref > 0:
6102-
obj = mupdf.pdf_load_object(pdf, xref)
6103-
else:
6104-
obj = mupdf.pdf_trailer(pdf)
6098+
try:
6099+
if xref > 0:
6100+
obj = mupdf.pdf_load_object(pdf, xref)
6101+
else:
6102+
obj = mupdf.pdf_trailer(pdf)
6103+
except Exception:
6104+
message(f"No object at {xref=}")
6105+
return "null"
61056106
res = JM_object_to_buffer(mupdf.pdf_resolve_indirect(obj), compressed, ascii)
61066107
text = JM_EscapeStrFromBuffer(res)
61076108
return text
@@ -6152,7 +6153,7 @@ def xref_stream(self, xref):
61526153
xreflen = mupdf.pdf_xref_len( pdf)
61536154
if not _INRANGE(xref, 1, xreflen-1) and xref != -1:
61546155
raise ValueError( MSG_BAD_XREF)
6155-
if xref >= 0:
6156+
if xref > 0:
61566157
obj = mupdf.pdf_new_indirect( pdf, xref, 0)
61576158
else:
61586159
obj = mupdf.pdf_trailer( pdf)
@@ -6170,7 +6171,7 @@ def xref_stream_raw(self, xref):
61706171
xreflen = mupdf.pdf_xref_len( pdf)
61716172
if not _INRANGE(xref, 1, xreflen-1) and xref != -1:
61726173
raise ValueError( MSG_BAD_XREF)
6173-
if xref >= 0:
6174+
if xref > 0:
61746175
obj = mupdf.pdf_new_indirect( pdf, xref, 0)
61756176
else:
61766177
obj = mupdf.pdf_trailer( pdf)

0 commit comments

Comments
 (0)