""" Formatadores de imagens. """ from io import BytesIO from docx import Document from docx.shared import Inches from docx.enum.text import WD_ALIGN_PARAGRAPH from typing import Dict, Any, Optional def inserir_imagem_de_documento( doc: Document, imagem_data: Optional[Dict[str, Any]], largura_inches: float = 5.5 ) -> bool: """ Insere uma imagem extraída de outro documento. Args: doc: Documento destino imagem_data: Dict com 'paragraph_element' e 'doc' (documento origem) largura_inches: Largura da imagem Returns: True se inseriu com sucesso, False caso contrário """ if not imagem_data: return False try: para_elem = imagem_data['paragraph_element'] doc_origem = imagem_data['doc'] ns_a = '{http://schemas.openxmlformats.org/drawingml/2006/main}' ns_r = '{http://schemas.openxmlformats.org/officeDocument/2006/relationships}' for blip in para_elem.iter(f'{ns_a}blip'): embed_id = blip.get(f'{ns_r}embed') if embed_id: try: image_part = doc_origem.part.related_parts[embed_id] image_stream = BytesIO(image_part.blob) p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER run = p.add_run() run.add_picture(image_stream, width=Inches(largura_inches)) return True except Exception as e: print(f"Erro ao copiar imagem: {e}") return False except Exception as e: print(f"Erro ao processar imagem: {e}") return False return False def add_image_placeholder(doc: Document) -> None: """Adiciona placeholder de imagem.""" p = doc.add_paragraph() p.add_run("[IMAGEM]").italic = True p.alignment = WD_ALIGN_PARAGRAPH.CENTER