Sistema web para conversão de documentos entre múltiplos formatos (MD, DOCX, HTML, ODT, PDF, RST, RTF, TEX, TXT), com suporte a arquivo base DOCX para inserir o conteúdo convertido em templates preservando capa, cabeçalhos e rodapés.
O projeto segue princípios de Clean Code e arquitetura em camadas:
- domain/: Modelos e DTOs (ConvertRequest, ConvertResult)
- services/: Casos de uso (ConvertService)
- converter/: Infraestrutura (PandocEngine, docx_merge)
- api/: Controllers e endpoints FastAPI
- MD → DOCX, HTML, MD, ODT, PDF, RST, RTF, TEX, TXT
- HTML, MD, RST, TEX, TXT → MD
- Python 3.11+
- Pandoc — incluído via
pypandoc-binary - PDF — incluído via
markdown-pdf(100% pip, sem LaTeX ou wkhtmltopdf)
cd backend
pip install -r requirements.txtNota para Windows: Se a instalação do lxml falhar, tente primeiro pip install lxml --only-binary :all: e depois pip install docx-merge-xml --no-deps.
start.batcd backend
python -m uvicorn main:app --reload --host 127.0.0.1 --port 8000Acesse: http://localhost:8000
# Instalar dependências de desenvolvimento
pip install -r backend/requirements-dev.txt
# Executar todos os testes
python -m pytest tests/ -v
# Executar com cobertura
python -m pytest tests/ -v --cov=backend --cov-report=term-missingPara converter conteúdo dentro de um documento Word existente:
- Abra o arquivo DOCX base no Word
- Insira o placeholder
{{CONTEUDO}}no local desejado - Salve o documento
- Na interface web, selecione o arquivo de origem e o arquivo base DOCX
- Escolha "DOCX" como formato de saída e converta
ConvrterAll-In-One/
├── backend/
│ ├── main.py # FastAPI app
│ ├── config.py # Configurações
│ ├── domain/
│ │ └── models.py # DTOs
│ ├── services/
│ │ └── convert_service.py
│ ├── converter/ # Infraestrutura
│ │ ├── pandoc_engine.py
│ │ └── docx_merge.py
│ ├── api/
│ │ ├── routes.py
│ │ └── dependencies.py
│ └── requirements.txt
├── frontend/
│ ├── index.html
│ └── static/
│ ├── style.css
│ └── app.js
├── tests/
│ ├── unit/
│ └── integration/
├── start.bat # Iniciar interface (Windows)
├── pyproject.toml # Black, Ruff, Pytest
└── README.md
Health check para monitoramento.
source_file(arquivo): arquivo de origemoutput_format(form): docx, html, md, odt, pdf, rst, rtf, tex, txttemplate_file(arquivo, opcional): DOCX baseplaceholder(form, opcional): placeholder no template (padrão:{{CONTEUDO}})
Lista os formatos suportados.
- Tamanho máximo de upload: 10MB por arquivo
MIT