File size: 1,913 Bytes
5240148
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"""
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