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-libEm 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).
Também na biblioteca
Lodash para JavaScript (Node.js): guia completo com exemplos
Rate Limiting em TypeScript: bibliotecas, estratégias e exemplos
Análise de HTML em Rust: bibliotecas e exemplos para web scraping
Geolocalização e Mapas em C# (.NET): Visão Geral de Bibliotecas e Ferramentas