Skip to content

fernandovmp/pdf-extractor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDF Extractor

API que converte um PDF para imagens. A API recebe o PDF e o envia para uma fila no redis que é processada por um serviço em segundo plano, este serviço converte as páginas do PDF e armazena um ZIP que pode ser baixado pela API.

Tecnologias Usadas

  • .NET 6 Plataforma de código aberto para desenvolvimento de aplicações
  • PostgreSQL Banco de dados relacional de código aberto
  • Redis Banco de dados em memória de código aberto
  • Dapper: Micro ORM
  • FluentMigrator Biblioteca para criação de migrações
  • Magick.NET Biblioteca para manipulação de imagem

Como rodar o projeto

Para rodar o projeto, uma das opções é usar o docker compose.

Tendo o docker e o docker compose instalados, basta executar o seguinte comando na pasta raiz do projeto.

docker compose up -d

Caso seja necessário escalar o número de instâncias do serviço que processa a fila de extração, o comando ficaria assim:

# "3" é o número de instancias que serão criadas
docker compose up -d --scale worker=3

Ao rodar dessa forma, uma pasta volumes será criada, dentro dela estarão os volumes do postgres e da aplicação. A pasta volumes/storage é uma pasta usada pela aplicação e é onde serão armazenados os arquivos PDF e imagens geradas.

A API ficará exposta na porta 5000 e acessando a rota /swagger se tem acesso a lista dos endpoints da API.

Como configurar o ambiente de desenvolvimento

É preciso ter as seguintes dependências configuradas:

Para gerar o build do projeto basta apenas rodar dotnet build na raiz do projeto, onde está o arquivo da solução (.sln).

Para rodar as migrações no banco, uma possibilidade é usar o projeto PdfExtractor.Migrations.Runner, o comando de execução precisa informar duas variáveis de ambiente, a conexão com o postgres e quantidade de tentativas para aplicar as migrações.

Configuracao__ConexaoPostgres="conexao-do-postgres-aqui" Configuracao__QtdeTentativas=1 dotnet run --project src/PdfExtractor.Migrations.Runner

No arquivo appsettings.json tanto da API quanto do Service Worker é necessário adicionar a seguinte seção:

{
    "Configuracao": {
        "ConexaoPostgres": "string de conexão com o Postgres",
        "CaminhoStorage": "caminho de uma pasta existente onde serão armazenados os arquivos",
        "ConexaoRedis": "string de conexão com o redis",
        "TempoIntervaloProcessamento": 1000 // Necessário apenas para o Service Worker
    }
}

Tendo isso configurados, tanto a API quando o Service Worker podem ser iniciados pelo comando dotnet run.

API:

dotnet run --project src/PdfExtractor.WebApi

A API ficará exposta na porta 5000 e acessando a rota /swagger se tem acesso a lista dos endpoints da API.

Antes de inciar o Service Worker, verifique se o Ghostscript está instalado e se o caminho para o seu executálvel está disponível na variável de ambiente $PATH.

Worker:

dotnet run --project src/PdfExtractor.Worker

About

API que converte as páginas de um PDF para imagens

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published