Projeto inspirado e derivado de: https://github.com/frkr/builddoc
Script Node.js para exportar documentos Markdown para PDF formatado profissionalmente. Converte todos os arquivos .md da raiz do projeto em PDFs com numeração, índices e formatação profissional, incluindo suporte completo para renderização de diagramas Mermaid.js.
- Conversão Automática: Processa automaticamente todos os arquivos Markdown (
.md) encontrados na raiz do projeto - Formatação Profissional: Gera PDFs com formatação profissional incluindo:
- Títulos hierárquicos com tamanhos e cores diferenciados
- Código formatado com syntax highlighting
- Tabelas com bordas e estilização
- Citações e listas formatadas
- Quebras de página inteligentes
- Suporte a Mermaid.js: Renderiza diagramas Mermaid.js diretamente nos PDFs:
- Diagramas de fluxo
- Gráficos de sequência
- Diagramas de classe
- E todos os outros tipos de diagramas suportados pelo Mermaid
- Chrome Headless: Utiliza Chrome/Chromium em modo headless para renderização de alta qualidade
- Processamento Sequencial: Processa arquivos um por vez para garantir estabilidade
- Resumo Detalhado: Exibe resumo completo do processamento com contagem de sucessos e erros
- Limpeza Automática: Executa script de limpeza de processos Chrome após o processamento
- Formato de Página: A4 com margens de 2.5cm (topo/rodapé) e 2cm (laterais)
- Fonte: DejaVu Sans para texto e DejaVu Sans Mono para código
- Renderização: Aguarda renderização completa dos diagramas Mermaid antes de gerar o PDF
- Timeout: Timeout de segurança de 10 segundos por diagrama Mermaid
- Diretório de Saída: Cria automaticamente o diretório
pdf_output/na raiz do projeto
- Node.js: Versão compatível (verifique
.nvmrcse existir) - Chrome/Chromium: Google Chrome, Chromium ou Microsoft Edge instalado
- Dependências NPM:
puppeteer: Para controle do navegadormarked: Para conversão de Markdown para HTML
- Clone ou baixe o projeto
- Instale as dependências:
npm ci- Se houver arquivo
.nvmrc, use a versão correta do Node.js:
nvm useExecute o script na raiz do projeto:
node export_pdf.jsOu, se o arquivo tiver permissão de execução:
./export_pdf.js- O script busca todos os arquivos
.mdna raiz do projeto - Exibe uma lista dos arquivos que serão processados
- Processa cada arquivo sequencialmente:
- Converte Markdown para HTML
- Renderiza diagramas Mermaid.js
- Gera PDF usando Chrome headless
- Salva os PDFs no diretório
pdf_output/ - Exibe resumo do processamento
- Executa
kill_chrome.shpara limpar processos do Chrome
projeto/
├── README.md
├── documentacao.md
├── pdf_output/
│ ├── README.pdf
│ └── documentacao.pdf
└── ...
Abaixo está um diagrama de fluxo Mermaid.js para testar a funcionalidade de exportação:
flowchart TD
A[Iniciar Script] --> B[Buscar arquivos .md]
B --> C{Arquivos encontrados?}
C -->|Não| D[Exibir mensagem]
C -->|Sim| E[Exibir lista de arquivos]
E --> F[Processar cada arquivo]
F --> G[Ler conteúdo Markdown]
G --> H[Converter para HTML]
H --> I{Tem diagramas Mermaid?}
I -->|Sim| J[Renderizar diagramas]
I -->|Não| K[Gerar HTML]
J --> K
K --> L[Usar Chrome headless]
L --> M[Gerar PDF]
M --> N[Salvar em pdf_output/]
N --> O{Próximo arquivo?}
O -->|Sim| F
O -->|Não| P[Exibir resumo]
P --> Q[Executar kill_chrome.sh]
Q --> R[Concluído]
D --> R
Você pode configurar o caminho do Chrome usando variáveis de ambiente:
PUPPETEER_EXECUTABLE_PATH: Caminho completo para o executável do ChromeCHROME_PATH: Caminho alternativo para o Chrome
O script verifica automaticamente os seguintes caminhos (macOS):
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome/Applications/Chromium.app/Contents/MacOS/Chromium/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge
- O script processa apenas arquivos
.mdna raiz do projeto (não recursivo) - Arquivos são processados em ordem alfabética
- O diretório
pdf_output/é criado automaticamente se não existir - Diagramas Mermaid são renderizados com tema
default - O script aguarda até 10 segundos por diagrama Mermaid para garantir renderização completa
Se você receber um erro sobre Chrome não encontrado:
- Instale o Google Chrome, Chromium ou Microsoft Edge
- Ou defina a variável de ambiente
CHROME_PATHcom o caminho completo
- Verifique se a sintaxe do diagrama está correta
- O script aguarda até 10 segundos para renderização
- Verifique o console do navegador para erros (se usar modo debug)
Certifique-se de que o script tem permissão de execução:
chmod +x export_pdf.js
chmod +x kill_chrome.shVeja o arquivo LICENSE para mais detalhes.