Geração de PDF em JavaScript: biblioteca pdf-lib

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é pdf-lib e para que serve?

pdf-lib é uma biblioteca poderosa e leve para criar e editar documentos PDF em JavaScript (Node.js e navegador). Ao contrário de soluções pesadas como Puppeteer ou jsPDF, o pdf-lib não requer a instalação de um ambiente de navegador (Chromium) e trabalha exclusivamente com estruturas nativas de PDF. É ideal para geração no lado do servidor de relatórios, faturas, certificados e quaisquer outros documentos onde você precisa de controle total sobre o conteúdo: texto, fontes (incluindo incorporação), imagens, formulários, anotações e páginas.

Instalação

A instalação via npm é simples:

npm install pdf-lib

Em seguida, importe para o projeto:

const { PDFDocument, rgb, StandardFonts } = require('pdf-lib');

Principais funcionalidades

  • Criação de PDF do zero — adicionar páginas, texto, imagens.
  • Edição de PDFs existentes — copiar páginas, inserir texto sobreposto, mesclar documentos.
  • Trabalho com fontes — suporte para fontes padrão (Helvetica, TimesRoman) e incorporação de fontes TTF personalizadas.
  • Desenho de formas — linhas, retângulos, elipses com configuração de cor e transparência.
  • Formulários e anotações — criação de campos de texto, botões, links.
  • Exportação para Uint8Array — o resultado pode ser salvo em um arquivo ou enviado ao cliente.

Exemplo de código em Node.js

Vamos criar um PDF simples com um título e uma imagem:

const { PDFDocument, rgb } = require('pdf-lib');const fs = require('fs');

async function createPDF() { const doc = await PDFDocument.create(); const page = doc.addPage([600, 400]); // Texto page.drawText('Olá, mundo!', { x: 50, y: 350, size: 30, color: rgb(0, 0.53, 0.71), }); // Retângulo page.drawRectangle({ x: 50, y: 200, width: 200, height: 100, color: rgb(0.9, 0.1, 0.1), borderColor: rgb(0, 0, 0), borderWidth: 2, }); // Incorporação de imagem (PNG) const imageBytes = fs.readFileSync('logo.png'); const image = await doc.embedPng(imageBytes); page.drawImage(image, { x: 300, y: 250, width: 100, height: 100, }); const pdfBytes = await doc.save(); fs.writeFileSync('output.pdf', pdfBytes);}

createPDF().catch(console.error);

Quando usar pdf-lib?

pdf-lib é a melhor escolha se você estiver trabalhando em um ambiente Node.js (ou navegador) e precisar de:
- Gerar PDFs rapidamente sem iniciar um navegador (economia de memória e tempo).
- Incorporar fontes personalizadas (por exemplo, para cirílico).
- Editar PDFs prontos (adicionar marcas d'água, mesclar documentos).
- Criar formulários interativos.

Evite pdf-lib se você precisar renderizar HTML/CSS complexo em PDF (neste caso, Puppeteer é mais adequado) ou trabalhar com grandes volumes de dados (PDFs pesados podem tornar o processo mais lento).

Recommendations