Geração de PDF em JavaScript (Node.js): 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 PDF em JavaScript (Node.js): visão geral de bibliotecas e ferramentas



Criar documentos PDF é uma das tarefas comuns no desenvolvimento web. Seja para gerar faturas, relatórios, certificados ou simplesmente exportar dados, o Node.js oferece várias soluções poderosas. Neste artigo, vamos explorar as principais bibliotecas para trabalhar com PDF no lado do servidor em JavaScript, suas capacidades e exemplos de uso.



Por que gerar PDF no servidor?

A geração de PDF no servidor (em Node.js) oferece várias vantagens:

  • Uniformidade — o documento tem a mesma aparência em todos os dispositivos
  • Segurança — os dados não saem do servidor
  • Automação — é possível criar PDFs agendados ou em eventos específicos
  • Suporte a lógica complexa — acesso a bancos de dados, sistema de arquivos e outros recursos


Principais bibliotecas para geração de PDF em Node.js



1. PDFKit

PDFKit é a biblioteca mais popular para criar PDF "do zero". Ela não requer dependências externas e permite controle total sobre o conteúdo do documento.

Exemplo de uso:

const PDFDocument = require('pdfkit');const fs = require('fs');

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

// Adicionando conteúdodoc.fontSize(25).text('Olá, mundo!', 100, 100);doc.fontSize(12).text('Este é um PDF criado com PDFKit.', 100, 150);

// Desenhando uma linhadoc.moveTo(100, 200).lineTo(500, 200).stroke();

// Finalizando o documentodoc.end();

Recursos:

  • Adição de texto com diferentes fontes e tamanhos
  • Inserção de imagens (JPEG, PNG)
  • Desenho de linhas, retângulos e círculos
  • Suporte a links e marcadores
  • Criação de documentos com várias páginas


2. Puppeteer

Puppeteer é uma ferramenta para controlar o navegador Chrome/Chromium. Ela permite gerar PDF a partir de páginas HTML, o que é útil para layouts complexos.

Exemplo de uso:

const puppeteer = require('puppeteer');

async function generatePDF() { const browser = await puppeteer.launch(); const page = await browser.newPage();

await page.setContent('<h1>Título</h1><p>Texto do documento</p>'); await page.pdf({ path: 'page.pdf', format: 'A4' });

await browser.close();}

generatePDF();

Características:

  • Suporte a CSS, JavaScript e todas as tecnologias web modernas
  • Ideal para converter templates HTML em PDF
  • Possibilidade de impressão com parâmetros definidos (formato, margens, escala)
  • Requer instalação do Chromium (~300 MB)


3. jsPDF (com adaptação para Node.js)

jsPDF é uma biblioteca cliente, mas existem wrappers para uso em Node.js (por exemplo, jspdf-autotable).

Exemplo (usando jspdf e html2canvas):

const { jsPDF } = require('jspdf');const fs = require('fs');

const doc = new jsPDF();doc.text('Olá do Node.js!', 10, 10);doc.save('output.pdf');

Limitações: jsPDF não suporta layouts complexos e requer bibliotecas adicionais para trabalhar com HTML.



4. pdfmake

pdfmake é uma biblioteca baseada na descrição declarativa do documento em formato JSON.

Exemplo:

const pdfmake = require('pdfmake');const fs = require('fs');

const fonts = { Roboto: { normal: 'fonts/Roboto-Regular.ttf', bold: 'fonts/Roboto-Medium.ttf' }};

const printer = new pdfmake(fonts);

const docDefinition = { content: [ { text:

Recommendations