@@ -9516,6 +9516,7 @@ def __init__(self, page, document):
95169516 self.number = page.m_internal.number
95179517 else:
95189518 self.number = None
9519+ self.inserted_element_idx = None
95199520
95209521 def __repr__(self):
95219522 return self.__str__()
@@ -12450,6 +12451,24 @@ def rect_function(*args):
1245012451
1245112452 return spare_height, scale
1245212453
12454+ def _get_new_element_index(self):
12455+ PREFIX = "fzImg" # 'pymupdf image'
12456+ if self.inserted_element_idx is None:
12457+ doc = self.parent
12458+ ilst = [i[7] for i in doc.get_page_images(self.number)]
12459+ ilst += [i[1] for i in doc.get_page_xobjects(self.number)]
12460+ ilst += [i[4] for i in doc.get_page_fonts(self.number)]
12461+
12462+ i = 0
12463+ _imgname = PREFIX + "0" # first name candidate
12464+ while _imgname in ilst:
12465+ i += 1
12466+ _imgname = PREFIX + str(i)
12467+ self.inserted_element_idx = i
12468+ else:
12469+ self.inserted_element_idx += 1
12470+ return PREFIX + str(self.inserted_element_idx)
12471+
1245312472 def insert_image(
1245412473 page,
1245512474 rect,
@@ -12539,15 +12558,7 @@ def insert_image(
1253912558 clip = r * ~page.transformation_matrix
1254012559
1254112560 # Create a unique image reference name.
12542- ilst = [i[7] for i in doc.get_page_images(page.number)]
12543- ilst += [i[1] for i in doc.get_page_xobjects(page.number)]
12544- ilst += [i[4] for i in doc.get_page_fonts(page.number)]
12545- n = "fzImg" # 'pymupdf image'
12546- i = 0
12547- _imgname = n + "0" # first name candidate
12548- while _imgname in ilst:
12549- i += 1
12550- _imgname = n + str(i) # try new name
12561+ _imgname = page._get_new_element_index()
1255112562
1255212563 if overlay:
1255312564 page.wrap_contents() # ensure a balanced graphics state
@@ -13085,19 +13096,7 @@ def calc_matrix(sr, tr, keep=True, rotate=0):
1308513096
1308613097 matrix = calc_matrix(src_rect, tar_rect, keep=keep_proportion, rotate=rotate)
1308713098
13088- # list of existing /Form /XObjects
13089- ilst = [i[1] for i in doc.get_page_xobjects(page.number)]
13090- ilst += [i[7] for i in doc.get_page_images(page.number)]
13091- ilst += [i[4] for i in doc.get_page_fonts(page.number)]
13092-
13093- # create a name not in that list
13094- n = "fzFrm"
13095- i = 0
13096- _imgname = n + "0"
13097- while _imgname in ilst:
13098- i += 1
13099- _imgname = n + str(i)
13100-
13099+ _imgname = page._get_new_element_index()
1310113100 isrc = docsrc._graft_id # used as key for graftmaps
1310213101 if doc._graft_id == isrc:
1310313102 raise ValueError("source document must not equal target")
0 commit comments