Geração de relatórios PDF em TypeScript: bibliotecas e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Geração de relatórios PDF em TypeScript: visão geral das bibliotecas e exemplos práticos



A geração de documentos PDF é uma das tarefas essenciais no desenvolvimento de aplicações web modernas e sistemas corporativos. Relatórios, faturas, certificados, dashboards analíticos — tudo isso requer uma ferramenta conveniente e flexível para criar PDF no lado do servidor ou do cliente. TypeScript, como uma extensão fortemente tipada sobre JavaScript, oferece excelentes possibilidades para implementar essa funcionalidade. Neste artigo, veremos as principais bibliotecas para geração de PDF em TypeScript, suas características, vantagens e exemplos de uso.



Por que usar TypeScript para gerar PDF?



TypeScript adiciona tipagem estática, o que simplifica significativamente o desenvolvimento de sistemas complexos de geração de relatórios. A IDE fornece autocompletar, verificação de tipos e refatoração, reduzindo o número de erros. Além disso, o código TypeScript é fácil de manter e escalar, especialmente em projetos grandes.



Principais bibliotecas para geração de PDF em TypeScript



Vamos considerar três ferramentas mais populares: PDFKit, jsPDF e Puppeteer. Cada uma tem seu nicho e características.



1. PDFKit

PDFKit é uma biblioteca poderosa para criar documentos PDF em Node.js. Ela é totalmente escrita em JavaScript e suporta TypeScript através de definições de tipos (@types/pdfkit). PDFKit permite criar documentos do zero, adicionar texto, imagens, gráficos vetoriais, tabelas e muito mais.



Vantagens:

  • Controle total sobre o conteúdo e estrutura do PDF.
  • Suporte a fontes, cores, transparência.
  • Suporte nativo a caracteres cirílicos (ao carregar fontes).
  • Alta performance.


Exemplo de uso do PDFKit com TypeScript:

import PDFDocument from 'pdfkit';import * as fs from 'fs';

const doc = new PDFDocument();doc.pipe(fs.createWriteStream('report.pdf'));

doc.fontSize(25).text('Relatório de Vendas', 100, 100);doc.fontSize(12).text('Data: 2025-03-15', 100, 150);doc.moveDown();

doc.text('Produto: Notebook');doc.text('Quantidade: 10');doc.text('Valor: R$ 1.200.000,00');

doc.end();


Para funcionar corretamente com caracteres cirílicos, é necessário carregar uma fonte, por exemplo:

doc.registerFont('Roboto', 'fonts/Roboto-Regular.ttf');doc.font('Roboto').text('Olá, mundo!');


2. jsPDF

jsPDF é uma biblioteca do lado do cliente para gerar PDF diretamente no navegador. Ela também possui tipos para TypeScript. jsPDF é ideal para criar relatórios simples, faturas e notas fiscais sem processamento no servidor.



Vantagens:

  • Funciona no lado do cliente (não precisa de servidor).
  • Configuração e uso simples.
  • Suporte a layout HTML através do plugin html2canvas.


Exemplo de uso do jsPDF com TypeScript:

import { jsPDF } from 'jspdf';

const doc = new jsPDF();doc.setFontSize(18);doc.text('Relatório do Projeto', 10, 20);doc.setFontSize(12);doc.text('Concluído: 75%', 10, 40);doc.text('Orçamento: R$ 2.500.000,00', 10, 50);

doc.save('project-report.pdf');


Importante: jsPDF não suporta caracteres cirílicos "prontos para uso". Para trabalhar com texto em russo, é necessário carregar fontes através de addFileToVFS e addFont.



3. Puppeteer

Puppeteer é uma biblioteca para controlar o navegador Chrome/Chromium através do protocolo DevTools. Ela permite gerar PDF a partir de HTML/CSS com máxima precisão, pois usa a renderização real do navegador. Puppeteer possui tipos TypeScript oficiais.



Vantagens:

  • Suporte completo a CSS, Flexbox, Grid, caracteres cirílicos.

Recommendations