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
|