Script rápido para gerar faturas profissionais em PDF via linha de comando (Node.js/C#)
Olá, pessoal!
Muitas vezes, em projetos pequenos ou MVPs, tudo o que precisamos é de uma forma simples de disparar uma fatura por e-mail ou gerar um recibo em PDF sem ter que configurar todo o iTextSharp, QuestPDF ou lidar com dependências de fontes no Docker.
Para resolver isso de forma "plug and play", preparei um exemplo prático de como automatizar essa geração usando a SwiftInvoice, uma API que desenvolvi e que roda de forma stateless (você envia o JSON e recebe o PDF no stream).
- O que este script resolve?
Layout Automático: Tabelas e quebras de página já formatadas.
PIX Nativo: Você passa a chave e ele gera o QR Code no rodapé.
Sem dependências locais: Roda em qualquer ambiente (Windows, Linux, Serverless) porque o processamento pesado de PDF acontece na nuvem.
- Exemplo em Node.js
JavaScript
const axios = require('axios');
const fs = require('fs');
const generateInvoice = async () => {
const options = {
method: 'POST',
url: 'https://swiftinvoice.p.rapidapi.com/GenerateInvoice',
headers: {
'content-type': 'application/json',
'X-RapidAPI-Key': 'YOUR_RAPIDAPI_KEY', // Get it at rapidapi.com
'X-RapidAPI-Host': 'swiftinvoice.p.rapidapi.com'
},
data: {
// Document Info
InvoiceNumber: "2026-001",
Language: "pt-BR", // Supports pt-BR, en-US, es-ES
Currency: "BRL",
IssueDate: new Date().toISOString(),
DueDate: "2026-04-15T00:00:00Z",
Template: "blue", // Design theme
IsDraft: false,
// Sender Info
SenderName: "Your Company Name",
SenderCity: "Rio de Janeiro",
SenderDocument: "00.000.000/0001-00", // CNPJ/CPF
LogoUrl: "https://yourlink.com/logo.png",
// Recipient Info
RecipientName: "Client XYZ",
RecipientAddress: "Main Street, 123",
CustomerEmail: "client@email.com",
// Items & Billing
Items: [
{ Description: "Software Development", Quantity: 1, UnitPrice: 1500.00 },
{ Description: "Cloud Maintenance", Quantity: 1, UnitPrice: 50.00 }
],
TaxRate: 0,
DiscountAmount: 0,
// Payment & PIX
PixKey: "your-pix-key@provider.com", // Native QR Code generation
BankName: "Banco do Brasil",
Agency: "0001",
AccountNumber: "12345-6"
},
responseType: 'arraybuffer'
};
try {
const response = await axios.request(options);
fs.writeFileSync('invoice.pdf', response.data);
console.log('✅ PDF successfully generated: invoice.pdf');
} catch (error) {
console.error('❌ Error details:', error.response ? error.response.data.toString() : error.message);
}
};
generateInvoice();
Atualização: Acabei de lançar um repositório com exemplos completos de código em C#, Node.js, Python, PHP e Go! Confira aqui.
- Por que usar uma API para isso?
A dor de cabeça de manter bibliotecas de renderização gráfica em containers Linux é real (quem já viu erro de libgdiplus sabe do que estou falando). Ao usar um endpoint, você ganha:
Padronização: O PDF sempre terá o mesmo layout, independente de onde o script rodar.
Internacionalização: A API já formata datas e moedas conforme a culture (PT, EN, ES).
Escalabilidade: O seu servidor principal não sofre com picos de CPU durante a renderização de documentos pesados.
Disponibilizei um plano gratuito no RapidAPI para quem quiser testar em dev ou para projetos de baixo volume.
Link para o Playground e Documentação: https://rapidapi.com/limaandreasantos/api/swiftinvoice
Espero que o script ajude a poupar algumas horas de código de alguém hoje! Se tiverem sugestões de campos novos ou melhorias no layout, comentem aqui.