import pytest from PIL import Image from unlimited_ocr_rdna4.errors import InferenceError from unlimited_ocr_rdna4.pdf import PDFPageRenderer def _make_pdf(path) -> None: image = Image.new("RGB", (120, 80), "white") try: image.save(path, format="PDF", resolution=72) finally: image.close() def test_pdf_renders_one_page_at_a_time(tmp_path) -> None: pdf = tmp_path / "fixture.pdf" _make_pdf(pdf) with PDFPageRenderer( pdf, tmp_path, dpi=72, start_page=1, max_pages=1, max_page_pixels=20_000, max_total_pixels=20_000, max_page_rendered_bytes=1_000_000, max_rendered_bytes=1_000_000, ) as renderer: assert tuple(renderer.page_numbers) == (1,) rendered = renderer.render(1) assert rendered.is_file() def test_pdf_rejects_page_over_pixel_limit(tmp_path) -> None: pdf = tmp_path / "fixture.pdf" _make_pdf(pdf) with ( PDFPageRenderer( pdf, tmp_path, dpi=72, start_page=1, max_pages=1, max_page_pixels=1_000, max_total_pixels=20_000, max_page_rendered_bytes=1_000_000, max_rendered_bytes=1_000_000, ) as renderer, pytest.raises(InferenceError, match="would render"), ): renderer.render(1)