Executando verificação de segurança...
1

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.

Carregando publicação patrocinada...