Site estático sem backend de processamento. O HTML de cada página é gerado em tempo de build; no navegador, um script único lê a configuração da página e aciona as bibliotecas de PDF. O arquivo do usuário é lido com APIs do navegador, processado em memória e devolvido como download local. A única função de servidor é a detecção de país na borda da Cloudflare, usada para idioma e fuso, sem relação com os arquivos.
- Geração estática
- Um gerador estático em Node monta as páginas a partir de um catálogo de ferramentas, com títulos, descrições, perguntas frequentes e slugs por idioma. Português na raiz, inglês em /en/ e espanhol em /es/, com hreflang e sitemap.
- Ferramentas
- Juntar (ordem por arrastar), dividir (intervalos ou página a página, saída em ZIP), extrair páginas, organizar (miniaturas arrastáveis com exclusão), girar (90, 180 e 270 graus), PDF para JPG (resolução de 1x a 3x), imagem para PDF (JPG e PNG), comprimir, marca d'água e numerar páginas.
- Bibliotecas
- pdf-lib para criar e editar documentos, PDF.js 3.11.174 para renderizar páginas em worker e JSZip 3.10.1 para empacotar várias saídas. As três ficam no próprio projeto, servidas pelo próprio domínio, cerca de 2 MB com cache de longa duração.
- Segurança e privacidade
- CSP com worker-src e blob liberados apenas para o necessário, object-src 'none', frame-ancestors 'none', HSTS, nosniff, Referrer-Policy, Permissions-Policy, COOP e CORP. Nomes de arquivo escolhidos pelo usuário passam por escape antes de aparecer na tela.
- Implantação
- Cloudflare Pages para o site estático e uma função na borda para detecção de país.