gui-sparim's picture
Upload 44 files
8d6c767 verified
"""
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