""" Utilitários para leitura e manipulação de arquivos DOCX. """ from docx import Document from pathlib import Path from typing import Optional, Union def ler_texto_docx(caminho_arquivo: Union[str, Path]) -> str: """ Lê conteúdo de texto de um arquivo DOCX. Args: caminho_arquivo: Caminho para o arquivo DOCX Returns: Texto do documento com parágrafos separados por quebras duplas de linha """ caminho = Path(caminho_arquivo) if not caminho.exists(): return "" try: doc = Document(str(caminho)) return "\n\n".join(p.text for p in doc.paragraphs if p.text.strip()) except Exception as e: print(f"Erro ao ler arquivo DOCX {caminho}: {e}") return "" def mesclar_documento_fotos( doc_principal: Document, caminho_fotos: Optional[Union[str, Path]] ) -> Document: """ Mescla documento de registro fotográfico ao documento principal. Args: doc_principal: Objeto Document principal do laudo caminho_fotos: Caminho para o arquivo DOCX de registro fotográfico Returns: Documento mesclado (ou original se não houver documento de fotos) """ if not caminho_fotos: return doc_principal caminho = Path(caminho_fotos) if not caminho.exists(): return doc_principal try: from docxcompose.composer import Composer # Adicionar quebra de página antes de mesclar o registro fotográfico doc_principal.add_page_break() doc_fotos = Document(str(caminho)) composer = Composer(doc_principal) composer.append(doc_fotos) return composer.doc except ImportError: print("docxcompose não instalado. Execute: pip install docxcompose") return doc_principal except Exception as e: print(f"Erro ao mesclar documento de fotos: {e}") return doc_principal