"""Render PDF pages to a contact sheet for reading: python tools/pdf_pages.py <slug> <first> <last> <out.png> [width]"""
import sys, os, fitz
from PIL import Image
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from ocr_level4 import book_pdf
slug, a, b, out = sys.argv[1], int(sys.argv[2]), int(sys.argv[3]), sys.argv[4]
w = int(sys.argv[5]) if len(sys.argv) > 5 else 700
doc = fitz.open(book_pdf(slug))
ims = []
for i in range(a - 1, min(b, doc.page_count)):
    pix = doc[i].get_pixmap(matrix=fitz.Matrix(w / doc[i].rect.width, w / doc[i].rect.width))
    ims.append(Image.frombytes("RGB", (pix.width, pix.height), pix.samples))
cols = 2 if len(ims) > 1 else 1
rows = (len(ims) + cols - 1) // cols
H = max(im.height for im in ims)
sheet = Image.new("RGB", (w * cols, H * rows), "white")
for k, im in enumerate(ims):
    sheet.paste(im, ((k % cols) * w, (k // cols) * H))
sheet.save(out, quality=80)
print(out, sheet.size)
