"""Reproduce the 29 September 2026 PDF test (PyMuPDF 1.26.6).
Four synthetic scanned A4 pages, uncompressed RGB; no customer information.
Run: python create-scan-fixture.py [output.pdf]
The deliberately uncompressed input is not representative of every PDF.
"""
import fitz, sys, hashlib
out = sys.argv[1] if len(sys.argv)>1 else 'ots-synthetic-scan-20mb.pdf'
vector=fitz.open()
for n in range(4):
 p=vector.new_page(width=595,height=842)
 p.draw_rect(fitz.Rect(35,35,560,107),color=None,fill=(.08,.18,.23))
 p.insert_text((52,65),'NORTHSTAR / SYNTHETIC TEST',fontsize=10,color=(.65,.9,.83))
 p.insert_text((52,92),f'Operations report  /  {n+1:02d}',fontsize=21,color=(1,1,1))
 p.insert_text((40,137),'Fictional figures for PDF compression testing only.',fontsize=11)
 for i in range(18):
  y=176+i*24
  if i%2==0:p.draw_rect(fitz.Rect(38,y-16,557,y+6),color=None,fill=(.94,.96,.96))
  p.insert_text((45,y),f'Item {i+1:02d}   /   Sample department {n+1}',fontsize=10)
  p.insert_text((370,y),f'{(i+1)*137:,.2f}     |     Reviewed',fontsize=10)
 p.insert_text((40,650),'Small-print check: Invoice INV-2041; total 11,800.00.',fontsize=8)
 p.insert_text((40,672),'Compare row labels, decimal points and page count in every output.',fontsize=10)
 p.insert_text((40,790),f'Synthetic image-only input. No selectable source text. Page {n+1} of 4.',fontsize=9)
result=fitz.open()
for p in vector:
 pix=p.get_pixmap(matrix=fitz.Matrix(1050/595,1587/842),alpha=False)
 page=result.new_page(width=595,height=842);page.insert_image(page.rect,pixmap=pix)
result.set_metadata({'title':'OpenToolSuite synthetic scan compression fixture','author':'OpenToolSuite','creationDate':'D:20260929000000Z'})
result.save(out,deflate=False,no_new_id=True)
b=open(out,'rb').read();print(len(b),hashlib.sha256(b).hexdigest());print('PyMuPDF',fitz.VersionBind)
