O LuraPDF carrega seu PDF usando o pdf.js, que renderiza o conteúdo de cada página em um canvas HTML. Uma camada de canvas interativa do fabric.js fica sobreposta à renderização do pdf.js, permitindo interações como clicar para selecionar, arrastar, redimensionar e editar texto. Ao editar um elemento de texto, você está modificando um objeto de texto do fabric.js que se sobrepõe à renderização original do PDF. Novos objetos — formas, assinaturas, caixas de texto, imagens — são adicionados como objetos do fabric.js posicionados no canvas. Essa arquitetura oferece um editor responsivo e interativo que funciona inteiramente no navegador, sem qualquer comunicação com o servidor.
Ao clicar em Salvar PDF, o pdf-lib assume o controle. Ele analisa o PDF original e aplica cada edição como uma modificação aos fluxos de conteúdo do PDF: as alterações de texto são escritas como operadores de texto PDF atualizados e novos objetos são adicionados como XObjects de formulário PDF posicionados na página. O resultado é um documento PDF/1.7 válido — não uma imagem achatada da página, mas um PDF real com a camada de texto, hiperlinks e campos de formulário preservados. O PDF montado é baixado diretamente para o seu dispositivo.