Esta é uma API simples e direta para converter conteúdo Markdown em HTML e PDF com formatação perfeita.
A API agora requer autenticação via API Key para endpoints de conversão:
# Inclua o header Authorization em todas as requisições POST
Authorization: Bearer md-api-sua-chave-super-secreta-aqui-
Arquivo
.env(recomendado):API_KEY=md-api-sua-chave-super-secreta-aqui
-
Variável de ambiente:
export API_KEY="sua-chave-super-segura"
-
Gerar nova chave:
node -e "console.log('md-api-' + require('crypto').randomBytes(32).toString('hex'))"
Endpoints públicos (sem autenticação):
GET /- DocumentaçãoGET /health- Status da API
Endpoints protegidos (requer API Key):
POST /convert- Conversão simplesPOST /convert/full- HTML completoPOST /convert/pdf- PDF diretoPOST /html-to-pdf- HTML para PDF
Retorna uma página HTML com documentação completa, exemplos de uso e interface para testar a API.
Converte markdown para HTML puro.
Exemplo de uso:
curl -X POST http://localhost:7000/convert \
-H "Content-Type: application/json" \
-H "Authorization: Bearer md-api-sua-chave-super-secreta-aqui" \
-d '{"markdown": "# Título\n\nEste é um **texto** em markdown."}'Converte markdown para um documento HTML completo com CSS.
Exemplo de uso:
curl -X POST http://localhost:7000/convert/full \
-H "Content-Type: application/json" \
-H "Authorization: Bearer md-api-sua-chave-super-secreta-aqui" \
-d '{"markdown": "# Meu Documento\n\nEste é um **texto** em markdown.", "title": "Meu Título"}'Converte markdown diretamente para PDF no formato A4 com formatação preservada.
Exemplo de uso:
curl -X POST http://localhost:7000/convert/pdf \
-H "Content-Type: application/json" \
-H "Authorization: Bearer md-api-sua-chave-super-secreta-aqui" \
-d '{"markdown": "# Relatório\n\nConteúdo do relatório.", "title": "Meu Relatório"}' \
--output documento.pdfConverte HTML completo para PDF mantendo formatação exata.
Exemplo de uso:
curl -X POST http://localhost:7000/html-to-pdf \
-H "Content-Type: application/json" \
-H "Authorization: Bearer md-api-sua-chave-super-secreta-aqui" \
-d '{"html": "<h1>Título</h1><p>Conteúdo</p>", "title": "Documento"}' \
--output documento.pdfVerifica se a API está funcionando.
-
Inicie o servidor:
npm start
-
Acesse a documentação interativa: http://localhost:7000
-
Teste a conversão:
- Envie texto markdown via POST para
/convert - Receba HTML limpo de volta
- Use
/convert/fullpara documento completo
- Envie texto markdown via POST para
# Título Principal
## Subtítulo
Este é um parágrafo com **texto em negrito** e *itálico*.
- Lista item 1
- Lista item 2
[Link para o Google](https://google.com)Código inline: `console.log('Hello')`
```javascript
function hello() {
console.log('Hello, World!');
}| Nome | Idade | Cidade |
|------|--------|--------|
| João | 30 | SP |
| Maria| 25 | RJ |- ✅ Conversão rápida e simples
- ✅ Suporte a markdown completo
- ✅ HTML com CSS styling
- ✅ PDF em formato A4 com formatação preservada
- ✅ API Segura com autenticação por API Key
- ✅ Conversão HTML → PDF direta
- ✅ API RESTful
- ✅ CORS habilitado
- ✅ Validação de entrada
- ✅ Tratamento de erros
- 📑 Formato A4 padrão
- 🎨 Formatação preservada exatamente como no HTML
- 📄 Margens adequadas (2cm em todos os lados)
- 🔧 Quebras de página inteligentes
- 💼 Qualidade profissional
- 📊 Tabelas bem formatadas
- 🎯 Código com syntax highlighting
Markdown → HTML → PDF
↓ ↓ ↓
Simples Estilizado A4
O projeto foi organizado em módulos para facilitar manutenção:
├── server.js # Servidor principal (apenas rotas)
├── config.js # Configurações centralizadas
├── auth.js # Middleware de autenticação
├── routes.js # Rotas de conversão
├── markdown.js # Processamento de Markdown
├── pdf.js # Geração de PDFs
├── documentation.js # Página de documentação
├── tempFiles.js # Gerenciamento de arquivos temporários
└── .env.example # Exemplo de variáveis de ambiente
A API agora detecta automaticamente o host/servidor onde está rodando:
- ✅ Request-based: Usa o host do request HTTP (melhor opção)
- ✅ Variável HOST: Configuração manual via
HOST=exemplo.com - ✅ Domínio personalizado: Via
DOMAIN=api.exemplo.com - ✅ IP local: Detecta automaticamente o IP da máquina
- ✅ Fallback: localhost como último recurso
HOST=exemplo.com # Host específico
DOMAIN=api.exemplo.com # Domínio personalizado
HTTPS=true # Usar HTTPS
USE_LOCAL_IP=true # Usar IP local
PORT=7000 # Porta da aplicação- Desenvolvimento: Mostra localhost ou IP local
- Docker/Container: Usa variáveis de ambiente
- Cloud/Produção: Detecta automaticamente do request
- Documentação: URLs sempre corretas para o ambiente atual
A API agora gerencia automaticamente arquivos temporários:
- ✅ Criação automática de diretório temporário
- ✅ Limpeza automática após cada geração de PDF
- ✅ Limpeza periódica a cada 30 minutos
- ✅ Limpeza na finalização da aplicação
- ✅ Arquivos únicos com UUID para evitar conflitos
Execute os testes para verificar todas as funcionalidades:
# Teste básico HTML
node test-api.js
# Teste específico PDF
node test-pdf.js