Giter Club home page Giter Club logo

microservice-html-to-pdf-with-sqs's Introduction

Microsserviço para converter HTML em PDF

Intro

Serviço para gerar PDF através de HTML, onde o mesmo consome uma fila no SQS (sqs-consumer) e ao processar a mensagem dispara um chamada POST em um webhook configurado na mensagem com o link e outros dados referente ao PDF. Utilizando os recursos de Cluters para executar várias instâncias do aplicativo e distribuir as cargas entre as threads.


Lib utilizada para realizar a conversão de HTML para PDF: html-pdf-node.


Esquema da mensagem no SQS (Message.Body)

{
  titulo: <string> "Título do PDF",
  link: <string> "seu_link_aqui.html", // link que contém o HTML.
  opcoes: <object> { // Opções para customizar o PDF
    landscape?: <boolean> false, // Orientação do PDF
    pageRanges?: <string> "", // Faixas de papel para imprimir, por exemplo, '1-5, 8, 11-13'
    format?: <string> "A4", // Formato PDF
    width?: <number> "", // Largura do PDF
    height?: <number> "", // Altura do PDF
    margin?: <object> { // margens do PDF
      top: <number> 20, // Margem superior
      right: <number> 20, // Margem direita
      bottom: <number> 20, // Margem inferior
      left: <number> 20 // Margem esquerda
    }
  },
  webhook: {
    endpoint: "https://dominio/metodo_post", // Seu endpoint POST que vai receber a chamada no final do processamento
    body: {} // Qualquer conteúdo. 
  }
}

Importante! No término do processamento da mensagem será atribuído três propriedades ao objeto "webhook.body", são eles:

  • sucesso: (boolean) Caso true significa que o relatório foi gerado e se for false deu algum erro no processamento.
  • link_pdf?: (string) Contém o link do PDF no Bucket (S3).
  • erro?: (string) Contém a mensagem de erro.



Fluxograma

fluxo



Instalação


Variáveis de ambiente

Crie um arquivo .env na raiz do projeto, use o arquivo .env.example como exemplo.


Uso

Siga os comandos abaixo para executar essa aplicação em sua máquina.

Atenção! É necessário que o seu ambiente de desenvolvimento esteja configurado para trabalhar docker e docker-compose. Caso não tenha os mesmos configurados, você precisará instalar esse projeto manualmente. Veja os requisitos da aplicação aqui!

# Clonando o repositório da aplicação.

git clone https://github.com/ThompsonMss/ms-pdf-com-sqs
# Entrando na pasta da aplicação.

cd ms-pdf/
# Comando para iniciar o container da aplicação com docker-compose.

docker-compose up -d

Pronto! Abra em seu navegador o link abaixo para ter certeza que o serviço está online.

Link MS PDF - http://localhost:3005


Rotas


Rota de "health check"

GET - http://localhost:3005/

  • Resposta: StatusCode 200 - Service is running! ;D.

Rota para debugar como está a conversão do HTML para PDF sem precisar inscrever em alguma fila.

POST - http://localhost:3005/debug-pdf

headers: // Cabeçalhos
  {
    key_authetication: "CHAVE_AUTENTICACAO_DO_MS" // Definida em .env
  }

body: // Corpo
  {
    link: "URL do HTML",
    opcoes: {} // Opções de estilização do PDF, as mesmas do Esquema da mensagem no SQS.
  }
  • Resposta: StatusCode 200 - Content-Type: application/pdf.

Requisitos da aplicação

A estrutura do sistema tem alguns requisitos, são eles:

  • NodeJS >= 16

Links

linkedin


Licença

MIT

microservice-html-to-pdf-with-sqs's People

Contributors

thompsonmss avatar

Stargazers

Roman avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.