Just another demonstration of PyMuPDF's features to deal with annotations:
Take a page with several annotations and let them change places in reverse order: first and last annot exchange their rectangles, second and second to last, etc.
The annotation images are enlarged or compressed as required to fit into their new areas.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
import fitz doc = fitz.open("some.pdf") # open pdf page = doc[n] # open the page (0-based number) rtab =  # store all rectangles here annot = page.firstAnnot # read first annotation while annot: rtab.append(annot.rect) # store rectangle annot = annot.next # read next annot annot = page.firstAnnot # cycle thru annots again for rect in reversed(rtab): annot.setRect(rect) # give it a new place annot = annot.next doc.save("some-reversed.pdf") # save PDF with reversed annotations