Geração de PDF em TypeScript: visão geral das ferramentas
A geração de documentos PDF é uma das tarefas frequentes no desenvolvimento web. Graças ao TypeScript e bibliotecas poderosas, você pode criar relatórios complexos, faturas, certificados e outros documentos diretamente no navegador ou no servidor (Node.js). Neste artigo, vamos analisar as principais bibliotecas para trabalhar com PDF em TypeScript, suas características e exemplos de uso.
1. jsPDF — biblioteca leve e popular
jsPDF é uma das bibliotecas mais comuns para criar PDF no lado do cliente. Ela permite gerar documentos diretamente no navegador, usando apenas JavaScript/TypeScript. A biblioteca suporta texto, imagens, tabelas e formatação básica.
Instalação
npm install jspdf @types/jspdfExemplo: criando um PDF simples
import { jsPDF } from 'jspdf';
const doc = new jsPDF();doc.text('Olá, mundo!', 10, 10);doc.save('document.pdf');Prós e contras
- ✅ Facilidade de uso
- ✅ Funciona no navegador e Node.js (com módulos adicionais)
- ❌ Suporte limitado para layouts complexos
- ❌ Difícil trabalhar com tabelas (requer configuração manual)
2. PDFKit — ferramenta poderosa para geração no servidor
PDFKit é uma biblioteca para Node.js que oferece controle total sobre a criação de PDF. Ela é ideal para geração no servidor de documentos complexos: relatórios, faturas, brochuras. Suporta fontes, gradientes, gráficos vetoriais e documentos com várias páginas.
Instalação
npm install pdfkit @types/pdfkitExemplo: criando um PDF com texto e imagem
import PDFDocument from 'pdfkit';import fs from 'fs';
const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(25).text('Título', 100, 100);doc.image('path/to/image.png', 100, 150, { width: 200 });doc.end();Prós e contras
- ✅ Flexibilidade e controle total
- ✅ Suporte para gráficos complexos
- ❌ Não funciona no navegador (apenas Node.js)
- ❌ API mais complexa em comparação com jsPDF
3. Puppeteer — geração de HTML para PDF
Puppeteer é uma biblioteca para controlar o navegador Chrome headless. Ela permite converter páginas HTML em PDF, o que é útil se você já tem a estrutura do documento pronta (por exemplo, uma fatura ou relatório). Adequado tanto para geração no cliente quanto no servidor.
Instalação
npm install puppeteerExemplo: gerando PDF a partir de HTML
import puppeteer from 'puppeteer';
async function generatePDF() { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.setContent('<h1>Olá, PDF!</h1><p>Este é um relatório.</p>'); await page.pdf({ path: 'report.pdf', format: 'A4' }); await browser.close();}
generatePDF();Prós e contras
- ✅ Uso completo de CSS e HTML
- ✅ Suporte para layouts e estilos complexos
- ❌ Requer instalação do Chrome (tamanho grande)
- ❌ Mais lento que bibliotecas especializadas
4. pdfmake — geração baseada em estrutura JSON
pdfmake é uma biblioteca que usa uma abordagem declarativa: você descreve a estrutura do documento em JSON, e a biblioteca constrói o PDF. Ideal para criar tabelas, listas e relatórios.
Instalação
npm install pdfmake @types/pdfmakeExemplo: criando um PDF com tabela
import pdfMake from 'pdfmake/build/pdfmake';import pdfFonts from 'pdfmake/build/vfs_fonts';
pdfMake.vfs = pdfFonts.pdfMake.vfs;
const docDefinition = { content: [ { text: 'Relatório'