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