File size: 1,384 Bytes
f340984 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 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)
|