"""Test if the full pipeline (extract, redact, re-insert links) affects insert_textbox.""" import sys sys.path.insert(0, '.') import importlib.util import fitz spec = importlib.util.spec_from_file_location('pdf_mod', 'translators/pdf_translator.py') pdf_mod = importlib.util.module_from_spec(spec) spec.loader.exec_module(pdf_mod) doc = fitz.open('sample_files/test_corpus/test_pdf.pdf') page = doc[0] # Step 1: Extract blocks raw_blocks = pdf_mod.PDFTranslator()._extract_text_blocks(page) title = raw_blocks[0] print(f"Title bbox: {title['bbox']}") # Step 2: Simulate redaction title_rect = fitz.Rect(title['bbox']) page.add_redact_annot(title_rect, fill=(1, 1, 1)) page.apply_redactions(images=fitz.PDF_REDACT_IMAGE_NONE) print("After redaction") # Step 3: Simulate link reinsertion (we have TOC links) links = list(page.get_links()) print(f"Got {len(links)} links") for link in links: from_rect = link.get("from") if link.get("page") is not None: page.insert_link({ "kind": fitz.LINK_GOTO, "from": from_rect, "page": link["page"], "to": fitz.Point(72, 72), }) elif link.get("uri"): page.insert_link({ "kind": fitz.LINK_URI, "from": from_rect, "uri": link["uri"], }) print("After link reinsertion") # Step 4: NOW try insert_textbox french = "Spécification technique : Office Translator v3.0" rect = fitz.Rect(title['bbox']) expanded_v = fitz.Rect(rect.x0, rect.y0, rect.x1, rect.y1 + rect.height * 3) # Test on original bbox rc1 = page.insert_textbox( rect, french, fontsize=22, fontfile='C:/Windows/Fonts/arial.ttf', color=(0.1, 0.2, 0.5), align=fitz.TEXT_ALIGN_LEFT, overlay=True, ) print(f"After full pipeline, original rect: rc={rc1}") # Test on expanded_v rc2 = page.insert_textbox( expanded_v, french, fontsize=22, fontfile='C:/Windows/Fonts/arial.ttf', color=(0.1, 0.2, 0.5), align=fitz.TEXT_ALIGN_LEFT, overlay=True, ) print(f"After full pipeline, expanded_v: rc={rc2}") doc.close()