O que é pdf-lib e para que serve?
pdf-lib é uma biblioteca JavaScript poderosa e limpa para criar e modificar documentos PDF no lado do servidor (Node.js) e no navegador. Ao contrário de soluções pesadas como Puppeteer, pdf-lib não requer a instalação de um navegador ou dependências externas. Ela trabalha diretamente com a especificação PDF, tornando-se a escolha ideal para gerar documentos simples e de complexidade média: relatórios, faturas, certificados, formulários e contratos.
Instalação
Para instalar no projeto Node.js, execute o comando:
npm install pdf-libA biblioteca não possui dependências nativas e é compatível com Node.js 10+.
Principais funcionalidades
- Criação de PDF do zero (páginas em branco, texto, imagens, incorporação de fontes).
- Edição de PDFs existentes (extrair páginas, inserir, excluir, girar).
- Trabalho com formulários (preenchimento de campos, criação de checkboxes e botões de rádio).
- Suporte a Unicode e fontes personalizadas (TTF, OTF).
- Adição de metadados (autor, título, data).
- Exportação para ArrayBuffer, Uint8Array ou Blob.
Exemplo de código em JavaScript (Node.js)
Abaixo está um exemplo simples de criação de PDF com texto e 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]); // Adiciona texto page.drawText('Привет, мир!', { x: 50, y: 350, size: 30, color: rgb(0, 0.53, 0.71), }); // Incorpora fonte (opcional) const fontBytes = fs.readFileSync('./fonts/roboto.ttf'); const font = await doc.embedFont(fontBytes); page.drawText('Fonte personalizada', { x: 50, y: 300, size: 20, font: font, }); // Salva const pdfBytes = await doc.save(); fs.writeFileSync('output.pdf', pdfBytes); console.log('PDF criado!');}
createPDF().catch(console.error);Este código cria um documento com duas linhas, uma das quais usa uma fonte incorporada. Para trabalhar com imagens, use doc.embedPng() ou doc.embedJpg().
Quando usar pdf-lib
- Você precisa gerar um PDF rapidamente sem iniciar um navegador.
- O documento não contém layout complexo (tabelas, colunas) — para isso, são melhores os template engines como Puppeteer.
- É necessária uma biblioteca leve com tamanho mínimo (~500 KB).
- Você trabalha com formulários ou edita PDFs existentes.
Conclusão
pdf-lib é uma excelente escolha para projetos que precisam de geração de PDF no Node.js sem dependências extras. É fácil de aprender, bem documentada e suporta todas as operações principais. Para layouts complexos, considere Puppeteer ou jsPDF, mas para 80% das tarefas, pdf-lib será mais que suficiente.
```