Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 21 additions & 22 deletions src/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9516,6 +9516,7 @@ def __init__(self, page, document):
self.number = page.m_internal.number
else:
self.number = None
self.inserted_element_idx = None

def __repr__(self):
return self.__str__()
Expand Down Expand Up @@ -12450,6 +12451,24 @@ def rect_function(*args):

return spare_height, scale

def _get_new_element_index(self):
PREFIX = "fzImg" # 'pymupdf image'
if self.inserted_element_idx is None:
doc = self.parent
ilst = [i[7] for i in doc.get_page_images(self.number)]
ilst += [i[1] for i in doc.get_page_xobjects(self.number)]
ilst += [i[4] for i in doc.get_page_fonts(self.number)]

i = 0
_imgname = PREFIX + "0" # first name candidate
while _imgname in ilst:
i += 1
_imgname = PREFIX + str(i)
self.inserted_element_idx = i
else:
self.inserted_element_idx += 1
return PREFIX + str(self.inserted_element_idx)

def insert_image(
page,
rect,
Expand Down Expand Up @@ -12539,15 +12558,7 @@ def insert_image(
clip = r * ~page.transformation_matrix

# Create a unique image reference name.
ilst = [i[7] for i in doc.get_page_images(page.number)]
ilst += [i[1] for i in doc.get_page_xobjects(page.number)]
ilst += [i[4] for i in doc.get_page_fonts(page.number)]
n = "fzImg" # 'pymupdf image'
i = 0
_imgname = n + "0" # first name candidate
while _imgname in ilst:
i += 1
_imgname = n + str(i) # try new name
_imgname = page._get_new_element_index()

if overlay:
page.wrap_contents() # ensure a balanced graphics state
Expand Down Expand Up @@ -13085,19 +13096,7 @@ def calc_matrix(sr, tr, keep=True, rotate=0):

matrix = calc_matrix(src_rect, tar_rect, keep=keep_proportion, rotate=rotate)

# list of existing /Form /XObjects
ilst = [i[1] for i in doc.get_page_xobjects(page.number)]
ilst += [i[7] for i in doc.get_page_images(page.number)]
ilst += [i[4] for i in doc.get_page_fonts(page.number)]

# create a name not in that list
n = "fzFrm"
i = 0
_imgname = n + "0"
while _imgname in ilst:
i += 1
_imgname = n + str(i)

_imgname = page._get_new_element_index()
isrc = docsrc._graft_id # used as key for graftmaps
if doc._graft_id == isrc:
raise ValueError("source document must not equal target")
Expand Down
Loading