Skip to content

Commit

Permalink
src/__init__.py: fix some places where failure to upcast to PdfPage i…
Browse files Browse the repository at this point in the history
…s not an error.

This addresses #3654.
  • Loading branch information
julian-smith-artifex-com committed Jul 4, 2024
1 parent 606c552 commit 5651ea9
Showing 1 changed file with 11 additions and 21 deletions.
32 changes: 11 additions & 21 deletions src/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7494,7 +7494,6 @@ def _add_ink_annot(self, list):

def _add_line_annot(self, p1, p2):
page = self._pdf_page()
ASSERT_PDF(page)
annot = mupdf.pdf_create_annot(page, mupdf.PDF_ANNOT_LINE)
a = JM_point_from_py(p1)
b = JM_point_from_py(p2)
Expand Down Expand Up @@ -7580,7 +7579,6 @@ def _add_stamp_annot(self, rect, stamp=0):
]
n = len(stamp_id)
name = stamp_id[0]
ASSERT_PDF(page)
r = JM_rect_from_py(rect)
if mupdf.fz_is_infinite_rect(r) or mupdf.fz_is_empty_rect(r):
raise ValueError( MSG_BAD_RECT)
Expand All @@ -7605,7 +7603,6 @@ def _add_stamp_annot(self, rect, stamp=0):
def _add_text_annot(self, point, text, icon=None):
page = self._pdf_page()
p = JM_point_from_py( point)
ASSERT_PDF(page)
annot = mupdf.pdf_create_annot(page, mupdf.PDF_ANNOT_TEXT)
r = mupdf.pdf_annot_rect(annot)
r = mupdf.fz_make_rect(p.x, p.y, p.x + r.x1 - r.x0, p.y + r.y1 - r.y0)
Expand Down Expand Up @@ -7681,7 +7678,6 @@ def _apply_redactions(self, text, images, graphics):
opts.text = text # how to treat text
opts.image_method = images # how to treat images
opts.line_art = graphics # how to treat vector graphics
ASSERT_PDF(page)
success = mupdf.pdf_redact_page(page.doc(), page, opts)
return success

Expand Down Expand Up @@ -7749,7 +7745,6 @@ def _get_resource_properties(self):
page list Resource/Properties
'''
page = self._pdf_page()
ASSERT_PDF(page)
rc = JM_get_resource_properties(page.obj())
return rc

Expand Down Expand Up @@ -8003,7 +7998,6 @@ def _insert_image(self,

def _insertFont(self, fontname, bfname, fontfile, fontbuffer, set_simple, idx, wmode, serif, encoding, ordering):
page = self._pdf_page()
ASSERT_PDF(page)
pdf = page.doc()

value = JM_insert_font(pdf, bfname, fontfile,fontbuffer, set_simple, idx, wmode, serif, encoding, ordering)
Expand All @@ -8023,7 +8017,6 @@ def _insertFont(self, fontname, bfname, fontfile, fontbuffer, set_simple, idx, w

def _load_annot(self, name, xref):
page = self._pdf_page()
ASSERT_PDF(page)
if xref == 0:
annot = JM_get_annot_by_name(page, name)
else:
Expand All @@ -8046,8 +8039,8 @@ def _other_box(self, boxtype):
return
return JM_py_from_rect(rect)

def _pdf_page(self):
return _as_pdf_page(self.this)
def _pdf_page(self, required=True):
return _as_pdf_page(self.this, required=required)

def _reset_annot_refs(self):
"""Invalidate / delete all annots of this page."""
Expand Down Expand Up @@ -8109,7 +8102,6 @@ def _set_pagebox(self, boxtype, rect):

def _set_resource_property(self, name, xref):
page = self._pdf_page()
assert page.m_internal
JM_set_resource_property(page.obj(), name, xref)

def _show_pdf_page(self, fz_srcpage, overlay=1, matrix=None, xref=0, oc=0, clip=None, graftmap=None, _imgname=None):
Expand Down Expand Up @@ -8453,7 +8445,7 @@ def annot_names(self):
'''
"""List of names of annotations, fields and links."""
CheckParent(self)
page = self._pdf_page()
page = self._pdf_page(required=False)
if not page.m_internal:
return []
return JM_get_annot_id_list(page)
Expand Down Expand Up @@ -8531,7 +8523,7 @@ def clean_contents(self, sanitize=1):
def cropbox(self):
"""The CropBox."""
CheckParent(self)
page = self._pdf_page()
page = self._pdf_page(required=False)
if not page.m_internal:
val = mupdf.fz_bound_page(self.this)
else:
Expand Down Expand Up @@ -8616,7 +8608,7 @@ def derotation_matrix(self) -> Matrix:
"""Reflects page de-rotation."""
if g_use_extra:
return Matrix(extra.Page_derotate_matrix( self.this))
pdfpage = self._pdf_page()
pdfpage = self._pdf_page(required=False)
if not pdfpage.m_internal:
return Matrix(mupdf.FzRect(mupdf.FzRect.UNIT))
return Matrix(JM_derotate_page_matrix(pdfpage))
Expand All @@ -8636,7 +8628,7 @@ def extend_textpage(self, tpage, flags=0, matrix=None):
def first_annot(self):
"""First annotation."""
CheckParent(self)
page = self._pdf_page()
page = self._pdf_page(required=False)
if not page.m_internal:
return
annot = mupdf.pdf_first_annot(page)
Expand All @@ -8660,7 +8652,7 @@ def first_widget(self):
"""First widget/field."""
CheckParent(self)
annot = 0
page = self._pdf_page()
page = self._pdf_page(required=False)
if not page.m_internal:
return
annot = mupdf.pdf_first_widget(page)
Expand Down Expand Up @@ -9451,7 +9443,7 @@ def load_widget( self, xref):
def mediabox(self):
"""The MediaBox."""
CheckParent(self)
page = self._pdf_page()
page = self._pdf_page(required=False)
if not page.m_internal:
rect = mupdf.fz_bound_page( self.this)
else:
Expand Down Expand Up @@ -9547,7 +9539,6 @@ def set_mediabox(self, rect):
"""Set the MediaBox."""
CheckParent(self)
page = self._pdf_page()
ASSERT_PDF(page)
mediabox = JM_rect_from_py(rect)
if (mupdf.fz_is_empty_rect(mediabox)
or mupdf.fz_is_infinite_rect(mediabox)
Expand Down Expand Up @@ -9576,7 +9567,7 @@ def transformation_matrix(self):
CheckParent(self)

ctm = mupdf.FzMatrix()
page = self._pdf_page()
page = self._pdf_page(required=False)
if not page.m_internal:
return JM_py_from_matrix(ctm)
mediabox = mupdf.FzRect(mupdf.FzRect.Fixed_UNIT) # fixme: original code passed mediabox=NULL.
Expand Down Expand Up @@ -12860,7 +12851,6 @@ def write_text(self, page, color=None, opacity=-1, overlay=1, morph=None, matrix
else:
colorspace = mupdf.fz_device_gray()

ASSERT_PDF(pdfpage)
resources = mupdf.pdf_new_dict(pdfpage.doc(), 5)
contents = mupdf.fz_new_buffer(1024)
dev = mupdf.pdf_new_pdf_device( pdfpage.doc(), mupdf.FzMatrix(), resources, contents)
Expand Down Expand Up @@ -15392,7 +15382,7 @@ def JM_get_annot_xref_list( page_obj):


def JM_get_annot_xref_list2(page):
page = page._pdf_page()
page = page._pdf_page(required=False)
if not page.m_internal:
return list()
return JM_get_annot_xref_list( page.obj())
Expand Down Expand Up @@ -21452,7 +21442,7 @@ def _reset_widget(annot):

@staticmethod
def _rotate_matrix(page):
pdfpage = page._pdf_page()
pdfpage = page._pdf_page(required=False)
if not pdfpage.m_internal:
return JM_py_from_matrix(mupdf.FzMatrix())
return JM_py_from_matrix(JM_rotate_page_matrix(pdfpage))
Expand Down

0 comments on commit 5651ea9

Please sign in to comment.