epicora-pdf
v1.0.2
Published
Converte documentos Markdown em PDF com identidade visual Epicora
Maintainers
Readme
epicora-pdf
Converta documentos Markdown em PDFs com identidade visual Epicora — em um único comando.
CLI que transforma arquivos .md em PDFs profissionais, com tipografia, paleta de cores, cabeçalho com logo e rodapé de paginação padronizados pela marca Epicora. Gerado via Playwright/Chromium para máxima fidelidade visual.
Instalação
npm install -g epicora-pdfApós instalar, verifique se o Chromium (usado internamente pelo Playwright) está disponível:
npx playwright install chromiumUso
epicora-pdf <arquivo.md> [opções]Exemplos
# Gera proposta.pdf no mesmo diretório do .md
epicora-pdf proposta.md
# Define o caminho de saída manualmente
epicora-pdf proposta.md --output documentos/proposta-cliente.pdf
# Gera e abre o PDF imediatamente
epicora-pdf proposta.md --openOpções
| Flag | Alias | Descrição |
|------|-------|-----------|
| --output <caminho> | -o | Caminho de saída do PDF. Padrão: mesmo nome e diretório do .md |
| --open | — | Abre o PDF gerado automaticamente após a conversão |
| --version | -V | Exibe a versão instalada |
| --help | -h | Exibe as opções disponíveis |
Saída
O PDF gerado segue o padrão visual da Epicora:
- Formato: A4 com margens de 88px (topo/base) × 56px (laterais)
- Cabeçalho: Logo da Epicora + URL
epicora.com.brcom faixa de gradiente colorida - Rodapé: Número de página em Violeta
- Tipografia: Fonte Alexandria via Google Fonts
- Syntax highlighting: Paleta neon no tema escuro para blocos de código
Paleta de marca
| Nome | Hex | Uso |
|------|-----|-----|
| Violeta | #6100ff | Cor primária, links, numeração, H3 |
| Grafite | #383838 | Texto principal, H1, H2 |
| Amarelo | #daff19 | Números e literais em código |
| Verde-água | #14ffb9 | Strings em código, gradiente |
| Vermelho | #fd4950 | Built-ins em código |
Markdown suportado
O conversor suporta toda a especificação GFM (GitHub Flavored Markdown), incluindo:
- Títulos
H1aH6com estilos distintos por nível - Negrito, itálico, ~~tachado~~,
código inlinee ==marcação== - Blocos de código com syntax highlighting automático para 180+ linguagens (via highlight.js)
- Diagramas Mermaid — fluxogramas, sequências, Gantt, etc.
- Tabelas com cabeçalho estilizado
- Blockquotes com acento visual
- Listas ordenadas, não-ordenadas e task lists (
- [ ]) - Imagens com bordas arredondadas e sombra
- Links clicáveis
- Régua horizontal (
---)
Quebras de página automáticas
Cada H1 (exceto o primeiro, que funciona como título de capa) dispara automaticamente uma nova página no PDF. Isso permite estruturar documentos longos apenas com headings, sem nenhuma configuração extra.
Estrutura do projeto
epicora-pdf/
├── src/
│ ├── cli.ts # Ponto de entrada — CLI com Commander.js
│ ├── renderer.ts # Orquestrador — pipeline MD → PDF via Playwright
│ ├── markdown.ts # Conversão MD → HTML (marked + highlight.js)
│ ├── template.ts # HTML5 completo com Google Fonts e mermaid.js
│ └── styles.ts # CSS completo com paleta de marca Epicora
├── assets/
│ └── logo.svg # Logo embedded como base64 no cabeçalho
├── bin/
│ └── epicora-pdf # Shebang para execução global via npm
└── dist/ # JavaScript compilado (gerado pelo build)Pipeline de conversão
arquivo.md
→ CLI valida entrada e saída
→ marked converte MD em HTML (GFM + highlight.js)
→ template.ts monta HTML5 completo com fonts e estilos
→ Playwright/Chromium renderiza o HTML
→ Playwright aguarda renderização de diagramas Mermaid
→ PDF A4 exportado com cabeçalho/rodapéRequisitos
- Node.js >= 18.0.0
- Chromium — instalado via
npx playwright install chromium - Conexão com internet no primeiro uso (carrega Google Fonts e Mermaid via CDN)
Desenvolvimento
Este é um repositório privado. Clone com acesso autorizado:
git clone https://github.com/Epicora-Software-House/epicora-pdf.git
cd epicora-pdf
npm install
npx playwright install chromiumComandos disponíveis
npm run dev -- input.md --output output.pdf --open # Executa via ts-node (sem build)
npm run build # Compila TypeScript → dist/
npx tsc --noEmit # Type-check sem emitir arquivos
node dist/cli.js input.md --output output.pdf # Executa o build compiladoModificando estilos
Toda a aparência visual está centralizada em src/styles.ts. As variáveis CSS no topo do arquivo controlam a paleta completa. Após alterações, rode npm run build para recompilar.
Modificando o cabeçalho ou rodapé
O cabeçalho e rodapé são gerados em src/renderer.ts pelas funções buildHeaderTemplate e buildFooterTemplate. Eles utilizam inline styles (requisito do Playwright para templates de cabeçalho/rodapé em PDF).
Licença
MIT © Epicora
