Geração de PDF em TypeScript: guia completo para desenvolvedores
Criar documentos PDF é uma das tarefas mais requisitadas no desenvolvimento web moderno. Na linguagem TypeScript, existem várias bibliotecas poderosas que permitem gerar PDF tanto no lado do cliente quanto no servidor (Node.js). Neste artigo, veremos três ferramentas principais: PDFKit, jsPDF e pdf-lib, além de mostrar exemplos práticos de seu uso.
Por que gerar PDF em TypeScript?
TypeScript adiciona tipagem estática, o que é especialmente importante ao trabalhar com documentos de estrutura complexa. Usar TypeScript para geração de PDF permite:
- Evitar erros de tipo ao criar tabelas e estilos
- Simplificar a refatoração de grandes projetos
- Integrar a geração de PDF com projetos TypeScript existentes (React, Angular, Node.js)
Visão geral das bibliotecas para geração de PDF
1. PDFKit (Node.js)
PDFKit é a biblioteca mais popular para criar PDF no servidor. Ela fornece acesso de baixo nível aos objetos PDF, suporta fontes, imagens, incorporação de gráficos vetoriais e caracteres cirílicos (ao conectar as fontes apropriadas).
import PDFDocument from 'pdfkit';import fs from 'fs';
const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(24).text('Olá, mundo!', 100, 100);doc.fontSize(12).text('Este é um PDF criado com PDFKit e TypeScript', 100, 150);doc.end();Características:
- Funciona apenas no Node.js (não é adequado para navegador)
- Requer configuração manual de fontes para cirílico
- Suporta layouts complexos, tabelas e gráficos
2. jsPDF (navegador e Node.js)
jsPDF é uma biblioteca versátil que funciona tanto no navegador quanto no servidor. É mais fácil de aprender, mas tem limitações quanto à complexidade dos layouts.
import { jsPDF } from 'jspdf';
const doc = new jsPDF();doc.text('Geração de PDF em TypeScript', 10, 10);doc.save('document.pdf');Características:
- API simples para documentos básicos
- Suporte a cirílico (requer conexão de fontes via addFont)
- Pode trabalhar com canvas e elementos HTML
3. pdf-lib (moderno e flexível)
pdf-lib é uma biblioteca leve com excelente suporte a TypeScript. Ela permite criar PDF do zero ou editar documentos existentes.
import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';
async function createPDF() { const doc = await PDFDocument.create(); const page = doc.addPage(); const font = await doc.embedFont(StandardFonts.Helvetica);
page.drawText('PDF com pdf-lib', { x: 50, y: 700, size: 24, font, color: rgb(0, 0, 0), });
const pdfBytes = await doc.save(); // Salvar ou enviar}Características:
- Suporte completo a TypeScript (tipos incluídos)
- Pode funcionar no navegador e Node.js
- Permite modificar PDFs existentes
- Requer trabalho manual com fontes para cirílico
Comparação das bibliotecas
| Característica | PDFKit | jsPDF | pdf-lib |
|---|---|---|---|
| Ambiente de execução | Node.js | Navegador + Node.js | Navegador + Node.js |
| Suporte a TypeScript | Parcial (via @types) | Parcial | Completo |
| Cirílico | Requer fontes | Requer fontes | Requer fontes |
| Layouts complexos | Excelente |