import fitz, shutil, os

doc = fitz.open("paper.pdf")

# page index is 0-based; PDF pages 1-9 are the Numbers paper
# A4 ~ 595 x 842 pt. Rects estimated from layout, zoom 3.
ZOOM = 3
M = fitz.Matrix(ZOOM, ZOOM)

# (output filename, page_index, clip rect x0,y0,x1,y1)
crops = [
    ("q1.png",  0, (140, 440, 540, 700)),   # pencil array
    ("q9.png",  2, (110, 510, 560, 700)),   # toy robots / trains / trucks + labels
    ("q10.png", 3, (160, 95, 540, 145)),    # shared number strip 65 87 56 78
    ("q12.png", 3, (170, 540, 545, 700)),   # 30 muffins
    ("q13.png", 4, (140, 175, 545, 240)),   # number pattern strip
    ("q15.png", 4, (160, 530, 360, 740)),   # vertical column addition
    ("q16.png", 5, (210, 165, 530, 220)),   # five number cards
    ("q17.png", 5, (230, 400, 460, 470)),   # four hexagon cards
    ("q18.png", 6, (110, 130, 565, 360)),   # Andy / John stamp boxes
]

doc_pages = doc.page_count
print("pages:", doc_pages)
for fn, pi, (x0, y0, x1, y1) in crops:
    page = doc[pi]
    pix = page.get_pixmap(matrix=M, clip=fitz.Rect(x0, y0, x1, y1))
    pix.save(fn)
    print("wrote", fn, pix.width, "x", pix.height)

# q11 uses the same number strip as q10
shutil.copyfile("q10.png", "q11.png")
print("copied q10.png -> q11.png")

print("done")
