Ferramentas para PDF que rodam 100% no seu navegador. Nenhum arquivo seu sai do dispositivo. Jamais.
Toda ferramenta online de PDF (iLovePDF, SmallPDF, Adobe Online, etc.) sobe seu arquivo para um servidor. Logs, backups, retenção, breach de terceiros — você não tem visibilidade nem controle.
Crow Docs faz tudo no seu próprio navegador. O arquivo nunca sai do dispositivo. Sem upload, sem servidor processando nada, sem custódia. Quando você fecha a aba, sumiu.
Esse repositório existe pra que qualquer pessoa possa auditar o código e confirmar que é exatamente isso que acontece. Ctrl+U na página viva já mostraria, mas aqui está organizado, comentado e versionado.
- 🔗 Juntar PDFs
- ✂️ Dividir PDF
- 🗑️ Remover páginas
- 📑 Extrair páginas
- 📋 Reorganizar páginas
- 🔄 Rotacionar páginas
- 🔢 Numerar páginas
- 📦 Comprimir PDF
- 🔧 Reparar PDF
- 📋 Converter para PDF/A
- 🖼️ JPG, PNG, WebP → PDF
- 📝 Word (.docx) → PDF
- 📊 Excel (.xlsx, .csv) → PDF
- 📽️ PowerPoint (.pptx) → PDF
- 🌐 HTML → PDF
- 🎬 Vídeo → PDF (frames)
- 🖼️ PDF → JPG/PNG/WebP
- 📝 PDF → Word
- 📊 PDF → Excel
- 📽️ PDF → PowerPoint
- ✏️ Editor de PDF (texto, formas)
- ✂️ Recortar páginas
- 💧 Marca d'água
- 📖 Booklet (livreto)
- ✍️ Assinar PDF
- 🔒 Proteger com senha
- 🔓 Remover senha
- 🔏 Censurar dados (CPF, e-mail, etc.)
- 🔍 OCR (escanear imagens)
- 🔎 PDF Pesquisável (camada OCR em PDFs escaneados)
- 📊 Extrair dados (CPF, CNPJ, CEP, datas, e-mails, valores)
- 🔬 OCR avançado (LSTM + OpenCV preprocessing)
- 📋 Layout analysis (tabelas → Markdown)
- 🌍 Traduzir PDF
- 🔍 Comparar PDFs (lado-a-lado)
- 📝 Preencher formulário
- 🏷️ Editar metadados
- 👁️ Visualizador de PDF
- 🔊 PDF → Áudio (text-to-speech)
- 📄 Gerador de currículo
- 🔄 Conversor de imagens
- 🎨 Markdown → Slides
| Operação | Onde acontece | Persistência |
|---|---|---|
| Leitura do arquivo | Browser (FileReader API) | Apenas em RAM |
| Processamento (OCR, conversão, etc.) | Browser (WASM/Canvas/WebWorker) | Apenas em RAM |
| Download do resultado | Browser (Blob URL) | Apenas em RAM até salvar |
| Telemetria | Nenhuma | — |
| Cookies / localStorage | Apenas tema, idioma e versão do app | LocalStorage do browser |
Não há backend. O domínio é apenas estático (Cloudflare Pages). O que você sobe nunca trafega pela rede.
100% client-side, zero build step:
- HTML/CSS/JS vanilla — sem framework, sem bundler, sem dependências de runtime
- pdf.js — renderização e parsing de PDF
- pdf-lib — manipulação estrutural de PDF
- Tesseract.js — OCR em WebAssembly
- OpenCV.js — pré-processamento de imagem (modo OCR avançado)
- jsPDF + autotable — geração de PDF
- docx + mammoth.js — Word
- XLSX — Excel
- JSZip — empacotamento ZIP
- html2canvas — captura de DOM
- marked — Markdown
- QRCode.js — geração de QR
Todas as bibliotecas são self-hosted em /libs para garantir funcionamento offline e evitar trackers de CDN.
- Cache-first para assets versionados (
/libs,/fonts, ícones) - Network-first para shell da app (HTML/JS/CSS) — sempre busca a versão mais nova quando online
- Banner de atualização automática quando uma nova versão é deployada
- Instalável como PWA em desktop e mobile
Não precisa de Node, npm, build ou dependências. Basta servir os arquivos estáticos.
git clone https://github.com/caaaiobaaa/crow-docs.git
cd crow-docs
python -m http.server 8080npx http-server -p 8080 -c-1Instale a extensão Live Server e clique em "Go Live" no index.html.
⚠️ Abririndex.htmldireto viafile://não funciona — service workers e algumas APIs (FileReader, Web Workers) exigem origemhttp(s)://.
O projeto está conectado ao GitHub via Cloudflare Pages — todo git push origin main faz deploy automático em ~30s.
Script automatizado para versionar + commitar + push:
node deploy.js # bumpa versão, commit, push, espera produção servir
node deploy.js --dry-run # mostra o que mudaria, não faz nada
node deploy.js --msg "..." # mensagem de commit customizada
node deploy.js --no-wait # push e sai (não espera Cloudflare buildar)
node deploy.js --wrangler # força upload via wrangler (fallback, sem usar git)O script:
- Lê
CACHE_NAMEemsw.js - Bumpa a versão em 4 lugares (sw.js, index.html APP_VERSION, query strings de app.js / sw-register.js / styles.css)
- Roda
node --checkem todos os JS - Detecta git remote → faz
git add + commit + push - Aguarda produção servir a nova versão (até 5 min, valida via HTTP em https://crowdocs.com.br)
- Sem git remote? Cai no fallback
wrangler pages deploy
Para usar em outro provedor (Netlify, Vercel, GitHub Pages), basta servir o conteúdo do diretório como estático.
Contribuições são MUITO bem-vindas. Veja CONTRIBUTING.md para detalhes.
Áreas com pedidos abertos:
- 🌐 Mais idiomas na UI (atualmente PT/EN)
- 🎨 Melhorias de UX no mobile
- 📦 Novas ferramentas
- ⚡ Otimizações de performance no OCR
- 🐛 Bug fixes
Antes de abrir uma PR grande, abra uma issue pra discutir a abordagem.
- Cliente Tesseract Worker para OCR em paralelo de N páginas
- Modo "documentos brasileiros" — pré-processamento específico para CNH, RG, comprovantes
- Histórico local (opcional, criptografado, fica só no device)
- Mais idiomas
- Editor de PDF com mais formas e ferramentas
MIT — use, modifique, distribua, hospede sua própria cópia. A única coisa que peço é que mantenha o crédito no LICENSE/README e, se rodar uma instância pública, deixe claro pros usuários se você adicionou telemetria ou backend (porque o ponto do projeto é justamente o oposto disso).
As bibliotecas em /libs mantêm suas próprias licenças (MIT, Apache 2.0, BSD, AGPL, OFL para fontes).
- 🌐 Site: crowdocs.com.br
- 🐛 Bugs / dúvidas: GitHub Issues
- 🔒 Vulnerabilidades: via Security Advisory
Se o projeto te ajudou, considere deixar uma ⭐ no repositório!
Feito com ☕ no Brasil.