# QoTool PDF to DOCX worker integration. SPDX-License-Identifier: AGPL-3.0-only
# Inputs are passed through Pyodide globals, never interpolated into Python code.
import logging
from pdf2docx import Converter
from pdf2docx.image.ImagesExtractor import ImagesExtractor
import pymupdf

logging.disable(logging.CRITICAL)
original_image_dict = ImagesExtractor._to_raw_dict

def rgb_image_dict(image, bbox):
    # Word PNG images require grayscale or RGB; convert CMYK before encoding.
    if image.colorspace and image.colorspace.n not in (1, 3):
        image = pymupdf.Pixmap(pymupdf.csRGB, image)
    return original_image_dict(image, bbox)

ImagesExtractor._to_raw_dict = staticmethod(rgb_image_dict)
converter = Converter('/input.pdf')
try:
    converter.convert('/output.docx', pages=selected_pages.to_py(), multi_processing=False,
                      ignore_page_error=False)
finally:
    converter.close()
    ImagesExtractor._to_raw_dict = staticmethod(original_image_dict)
