Vés al contingut

Desplega a Netlify ​

Netlify ofereix un excel·lent allotjament de llocs estàtics amb un nivell gratuït generós.

Desplegament amb un clic ​

Deploy to Netlify

Desplegament manual ​

Pas 1: connecta el repositori ​

  1. Inicia sessió a Netlify
  2. Fes clic a "Add new site" → "Import an existing project"
  3. Connecta el teu compte de GitHub
  4. Selecciona el teu fork de BentoPDF

Pas 2: configura la compilació ​

ParàmetreValor
Ordre de compilaciónpm run build
Directori de publicaciódist
Versió de Node18+

Pas 3: desplega ​

Fes clic a "Deploy site" i espera que acabi la compilació.

Fitxer de configuració ​

Crea netlify.toml a l'arrel del projecte:

toml
[build]
  command = "npm run build"
  publish = "dist"

[build.environment]
  NODE_VERSION = "18"

# Required security headers for SharedArrayBuffer (used by LibreOffice WASM)
[[headers]]
  for = "/*"
  [headers.values]
    Cross-Origin-Embedder-Policy = "require-corp"
    Cross-Origin-Opener-Policy = "same-origin"
    Cross-Origin-Resource-Policy = "cross-origin"

# Pre-compressed LibreOffice WASM binary - must be served with Content-Encoding
[[headers]]
  for = "/libreoffice-wasm/soffice.wasm.gz"
  [headers.values]
    Content-Type = "application/wasm"
    Content-Encoding = "gzip"
    Cache-Control = "public, max-age=31536000, immutable"

# Pre-compressed LibreOffice WASM data - must be served with Content-Encoding
[[headers]]
  for = "/libreoffice-wasm/soffice.data.gz"
  [headers.values]
    Content-Type = "application/octet-stream"
    Content-Encoding = "gzip"
    Cache-Control = "public, max-age=31536000, immutable"

# Cache other WASM files
[[headers]]
  for = "*.wasm"
  [headers.values]
    Cache-Control = "public, max-age=31536000, immutable"
    Content-Type = "application/wasm"

# SPA routing
[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

Important

Les capçaleres Cross-Origin-Embedder-Policy i Cross-Origin-Opener-Policy són necessàries per a les conversions de Word/ODT/Excel/PowerPoint a PDF. Sense elles, SharedArrayBuffer no està disponible i el motor WASM de LibreOffice no es podrà inicialitzar.

Les capçaleres Content-Encoding: gzip als fitxers .wasm.gz i .data.gz indiquen al navegador que els descomprimeixi automàticament. Sense elles, el navegador rep bytes gzip en brut i la compilació de WASM falla.

Variables d'entorn ​

Defineix-les a Site settings → Environment variables:

VariableDescripció
SIMPLE_MODEPosa-ho a true per a una compilació mínima
VITE_BRAND_NAMENom de marca personalitzat (substitueix "BentoPDF")
VITE_BRAND_LOGORuta del logotip relativa a public/ (p. ex. images/my-logo.svg)
VITE_FOOTER_TEXTText personalitzat del peu de pàgina o dels drets d'autor
VITE_DEFAULT_LANGUAGEIdioma per defecte de la interfície (p. ex. fr, de, es)

Domini personalitzat ​

  1. Ves a Site settings → Domain management
  2. Fes clic a "Add custom domain"
  3. Segueix les instruccions de configuració del DNS

Fitxers multimèdia grans ​

Per als fitxers WASM grans, considera activar Netlify Large Media:

bash
netlify lm:setup
git lfs track "*.wasm"

Resolució de problemes ​

La conversió de Word/ODT/Excel a PDF es queda al 55 % ​

Si les conversions de documents es queden penjades al 55 %, obre la consola de DevTools i comprova:

js
console.log(window.crossOriginIsolated); // should be true
console.log(typeof SharedArrayBuffer); // should be "function"

Si crossOriginIsolated és false, les capçaleres COEP/COOP del teu netlify.toml no s'estan aplicant. Assegura't que el fitxer és a l'arrel del projecte i torna a desplegar.

Si veus expected magic word 00 61 73 6d, found 1f 8b 08 08 a la consola, als fitxers .wasm.gz els falten les capçaleres Content-Encoding: gzip. Assegura't que els blocs [[headers]] de soffice.wasm.gz i soffice.data.gz són al teu netlify.toml.

La compilació falla ​

Comprova la compatibilitat de la versió de Node:

toml
[build.environment]
  NODE_VERSION = "20"

Càrrega inicial lenta ​

Activa l'optimització d'actius a Site settings → Build & deploy → Asset optimization.

Doble llicència: AGPL-3.0 i llicència comercial.