Skip to content

Commit 690c228

Browse files
cache element indexx
1 parent 62a6e4c commit 690c228

File tree

1 file changed

+21
-22
lines changed

1 file changed

+21
-22
lines changed

src/__init__.py

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)