diff --git a/Tests/test_pdfparser.py b/Tests/test_pdfparser.py index 4c522eb7a50..9f58ce3aa24 100644 --- a/Tests/test_pdfparser.py +++ b/Tests/test_pdfparser.py @@ -2,6 +2,7 @@ import time import zlib +from io import BytesIO import pytest @@ -132,6 +133,31 @@ def test_pdf_repr() -> None: assert pdf_repr(PdfBinary(b"\x90\x1f\xa0")) == b"<901FA0>" +def test_linearize_page_tree() -> None: + b = BytesIO() + with PdfParser(f=b, mode="wb") as pdf: + pdf.start_writing() + pdf.write_header() + + pages_id = pdf.next_object_id(0) + page_ids = [pdf.next_object_id(0) for _ in range(3)] + for page_id in page_ids: + pdf.write_page(page_id) + pdf.write_obj( + pages_id, + Type=PdfName(b"Pages"), + Count=2, + Kids=[page_ids[0], page_ids[1]], + ) + + pdf.pages = [pages_id, page_ids[2]] + pdf.write_catalog() + pdf.write_xref_and_trailer() + + with PdfParser(f=b) as pdf: + assert pdf.linearize_page_tree() == page_ids + + def test_duplicate_xref_entry() -> None: pdf = PdfParser("Tests/images/duplicate_xref_entry.pdf") assert pdf.xref_table.existing_entries[6][0] == 1197