Guilherme Silberfarb Costa
Initial deployment for Hugging Face Space
5240148
Raw
History Blame Contribute Delete
1.93 kB
"""
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