Implantar no Vercel
O Vercel oferece a experiência de implantação mais simples para sites estáticos.
Implantação com Um Clique
Implantação Manual
Passo 1: Faça um Fork do Repositório
Faça um fork de bentopdf/bentopdf para sua conta do GitHub.
Passo 2: Importe no Vercel
- Acesse vercel.com/new
- Selecione seu repositório com o fork
- Configure o projeto:
| Configuração | Valor |
|---|---|
| Framework Preset | Vite |
| Build Command | npm run build |
| Output Directory | dist |
| Install Command | npm install |
Passo 3: Variáveis de Ambiente (Opcional)
Adicione estas se necessário:
| Variável | Descrição |
|---|---|
SIMPLE_MODE | Defina como true para uma interface mínima |
VITE_BRAND_NAME | Nome de marca personalizado (substitui "BentoPDF") |
VITE_BRAND_LOGO | Caminho do logotipo relativo a public/ (ex.: images/my-logo.svg) |
VITE_FOOTER_TEXT | Texto personalizado de rodapé/direitos autorais |
VITE_DEFAULT_LANGUAGE | Idioma padrão da interface (ex.: fr, de, es) |
Passo 4: Implante
Clique em "Deploy" e aguarde a conclusão da compilação.
Domínio Personalizado
- Acesse as configurações do seu projeto
- Navegue até "Domains"
- Adicione seu domínio personalizado
- Configure o DNS conforme as instruções
Limitações
Arquivos Grandes
As funções serverless do Vercel têm um limite de 50MB. Como o BentoPDF é um site estático, isso não deve afetar você, mas os módulos WASM são grandes (~100MB no total). Garanta que eles sejam servidos a partir da pasta /public.
Solução de Problemas
Tempo Limite da Compilação
Se a compilação exceder o tempo limite, tente:
json
// vercel.json
{
"buildCommand": "npm run build",
"outputDirectory": "dist"
}404 ao Atualizar a Página
Adicione um vercel.json para o roteamento de SPA:
json
{
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}Conversão de Word/ODT/Excel para PDF Não Funciona
As conversões do LibreOffice WASM exigem SharedArrayBuffer, que precisa destes cabeçalhos de resposta em todas as páginas:
Cross-Origin-Embedder-Policy: require-corpCross-Origin-Opener-Policy: same-origin
Os arquivos pré-comprimidos .wasm.gz e .data.gz também precisam de Content-Encoding: gzip para que o navegador os descompacte.
Adicione isto ao seu vercel.json:
json
{
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }],
"headers": [
{
"source": "/(.*)",
"headers": [
{ "key": "Cross-Origin-Embedder-Policy", "value": "require-corp" },
{ "key": "Cross-Origin-Opener-Policy", "value": "same-origin" },
{ "key": "Cross-Origin-Resource-Policy", "value": "cross-origin" }
]
},
{
"source": "/libreoffice-wasm/soffice.wasm.gz",
"headers": [
{ "key": "Content-Type", "value": "application/wasm" },
{ "key": "Content-Encoding", "value": "gzip" }
]
},
{
"source": "/libreoffice-wasm/soffice.data.gz",
"headers": [
{ "key": "Content-Type", "value": "application/octet-stream" },
{ "key": "Content-Encoding", "value": "gzip" }
]
}
]
}Para verificar, abra o Console do DevTools e execute console.log(window.crossOriginIsolated). Deve retornar true.