Geração de PDF em TypeScript: visão geral de bibliotecas e ferramentas
Criar documentos PDF é uma das tarefas comuns no desenvolvimento web. O TypeScript, graças à tipagem forte e aos recursos modernos, permite escrever código confiável para geração de PDF tanto no cliente quanto no servidor. Neste artigo, veremos bibliotecas e ferramentas populares para geração de PDF em TypeScript, suas características e exemplos de uso.
1. PDFKit — poderosa biblioteca para servidor
PDFKit é uma das bibliotecas mais populares para criar PDF no Node.js. Ela fornece controle total sobre a estrutura do documento, suporta fontes, imagens, anotações e gráficos vetoriais. O PDFKit funciona no servidor e é ideal para gerar relatórios complexos, faturas ou certificados.
Instalação e exemplo:
npm install pdfkit @types/pdfkitimport PDFDocument from 'pdfkit';import * as fs from 'fs';
const doc = new PDFDocument();
doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(25).text('Olá, mundo!', 100, 100);doc.fontSize(12).text('Este é um PDF gerado com PDFKit e TypeScript.', 100, 150);
doc.end();PDFKit é ideal para:
- Criar PDF no servidor (Express, NestJS)
- Trabalhar com fontes personalizadas e codificações (incluindo cirílico)
- Adicionar imagens, tabelas e primitivos gráficos
2. jsPDF — geração de PDF no cliente
jsPDF é uma biblioteca cliente para criar PDF diretamente no navegador. É simples de usar, suporta texto, imagens, anotações e formas básicas. Para TypeScript, os tipos estão disponíveis através do DefinitelyTyped.
Instalação:
npm install jspdf @types/jspdfExemplo de geração de PDF no navegador:
import { jsPDF } from 'jspdf';
const doc = new jsPDF();
doc.text('Olá, TypeScript!', 10, 10);doc.text('Este é um PDF criado no navegador.', 10, 20);
doc.save('document.pdf');jsPDF é adequado para:
- Baixar PDF no lado do cliente (relatórios, recibos)
- Documentos simples sem layout complexo
- Prototipagem rápida
3. Puppeteer — geração a partir de HTML
Puppeteer é uma biblioteca para controlar o navegador Chrome/Chromium. Ela permite converter páginas HTML em PDF com preservação total de estilos, fontes e layout. Ideal para criar documentos complexos, relatórios e cartões de visita.
Instalação:
npm install puppeteerExemplo de conversão de HTML para PDF:
import puppeteer from 'puppeteer';
async function generatePDF(html: string, outputPath: string): Promise<void> { const browser = await puppeteer.launch(); const page = await browser.newPage();
await page.setContent(html, { waitUntil: 'networkidle0' }); await page.pdf({ path: outputPath, format: 'A4' });
await browser.close();}
// Usoconst htmlContent = `<h1 style="color: blue;">Título</h1><p>Texto com estilos HTML</p>`;generatePDF(htmlContent, 'output.pdf');Puppeteer é ideal para:
- Converter templates HTML complexos em PDF
- Criar PDF com estilos CSS, Flexbox, Grid
- Gerar PDF no servidor com controle total da aparência
4. pdf-lib — biblioteca leve e rápida
pdf-lib é uma biblioteca moderna para criar e modificar documentos PDF sem dependências externas. Funciona tanto no Node.js quanto no navegador. Suporta fontes, imagens, formulários e anotações.
Instalação:
npm install pdf-lib\