Spaces:
Sleeping
Sleeping
| """ | |
| 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 | |