Pular para o conteúdo principal

PdfService

Visao Geral

O PdfService fornece operacoes para criacao e gerenciamento de PDFs, incluindo geracao local de PDFs de pedidos, download de documentos online e acesso a relatorios formatados.

Localizacao: services/pdf/pdf.service.ts

Endpoints

MetodoEndpointDescricao
POST/api/v1/document/pdfDownload de documento PDF online (middleware)
GET/relatorioFormatadoLista relatorios formatados com paginacao
GET/relatorioFormatado/{id}Busca um relatorio formatado especifico

Metodos

createOrderPdfBase64(params)

Gera um PDF de pedido de venda em formato Base64. Operacao local, sem requisicao ao backend.

Parametros

NomeTipoObrigatorio
paramsCreateOrderPdfParamsNao

Retorno: Promise<string>

Exemplo

const pdfBase64 = await pdfService.createOrderPdfBase64({
orderNumber: 123,
customerName: "Cliente ABC",
sellerName: "Vendedor XYZ",
negotiationDate: "16/05/2026",
totalValue: 1500.5,
items: [
{
description: "Produto A",
quantity: 5,
totalValue: 750.0,
},
{
description: "Produto B",
quantity: 10,
totalValue: 750.5,
},
],
});

console.log(pdfBase64.substring(0, 50)); // JVBERi0xLjQK...

downloadPdfOnline(params)

Baixa um documento PDF do servidor online e salva localmente.

Parametros

NomeTipoObrigatorioDescricao
nuNota ou numNotastringSimNumero ou numero externo da nota fiscal

Retorno: Promise<string> (URI local do arquivo salvo)

Exemplo

const localUri = await pdfService.downloadPdfOnline({ nuNota: "122" });

console.log(localUri); // "/mock/cache/document-1715000000000.pdf"

Erros

StatusDescricao
4xx/5xxLanca Error: PdfService.downloadPdfOnline failed: {status}

fetchFormattedReportsRemote(params)

Busca relatorios formatados disponiveis com suporte a paginacao.

Parametros

NomeTipoObrigatorio
params{ page?: number; size?: number }Nao

Retorno: Promise<FormattedReport[]>

Exemplo

const reports = await pdfService.fetchFormattedReportsRemote({
page: 0,
size: 20,
});

console.log(reports[0].descricao); // "Descricao do relatorio 1"
console.log(reports[0].tela); // "Tela 1"

Erros

StatusDescricao
4xx/5xxLanca Error: PdfService.fetchFormattedReportsRemote failed: {status}

fetchFormattedReportByIdRemote(id)

Busca um relatorio formatado especifico pelo ID.

Parametros

NomeTipoObrigatorio
idstringSim

Retorno: Promise<FormattedReport>

Exemplo

const report = await pdfService.fetchFormattedReportByIdRemote("123");

console.log(report.nrRfe); // 123
console.log(report.descricao); // "Descricao do relatorio 1"

Erros

StatusDescricao
4xx/5xxLanca Error: PdfService.fetchFormattedReportByIdRemote failed: {status}

Estruturas de Dados

CreateOrderPdfParams

interface CreateOrderPdfParams {
orderNumber?: string | number | null;
customerName?: string | null;
sellerName?: string | null;
negotiationDate?: string | null;
totalValue?: number | string | null;
items?: CreateOrderPdfItem[];
}

CreateOrderPdfItem

interface CreateOrderPdfItem {
description?: string | null;
quantity?: number | string | null;
totalValue?: number | string | null;
}

FormattedReport

interface FormattedReport {
id: string;
idExterno: string;
nrRfe: number;
descricao: string;
tela: string;
dhCriacao: string;
dhAlteracao: string;
}

PageResponse<T>

interface PageResponse<T> {
content: T[];
page?: number;
size?: number;
totalElements?: number;
}

Subservicos Especializados

SubservicoLocalizacaoDescricao
DigitalCatalogPdfServiceservices/pdf/digital-catalog-pdf.service.tsGeracao de catalogo digital em PDF com imagens de produtos
SalePdfServiceservices/pdf/sale/sale.pdf.service.tsGeracao de PDF detalhado de vendas com itens e totalizadores

Componentes Relacionados

ComponenteDescricao
buildQueryParamsHelper para serializar parametros de query em requisicoes GET
apiWithoutAccessTokenInstancia Axios sem token de autenticacao
expo-file-systemGerenciamento de sistema de arquivos para salvar PDFs localmente
pdf-libBiblioteca para criacao e manipulacao de PDFs

Casos de Uso

  • Gerar PDFs de pedidos para visualizacao offline
  • Baixar documentos fiscais do servidor para consulta local
  • Listar e acessar relatorios pre-formatados
  • Exportar catálogos digitais e vendas em PDF

Testes

Localizacao: services/pdf/pdf.service.test.ts

Principais cenarios

CenarioResultado esperado
createOrderPdfBase64 com parametros validosRetorna string Base64 de PDF valido
createOrderPdfBase64 sem parametrosGera PDF com valores padrao
downloadPdfOnline status 200Retorna URI do arquivo salvo localmente
downloadPdfOnline status 400Lanca PdfService.downloadPdfOnline failed
fetchFormattedReportsRemote status 200Retorna formattedReportResponseMock.content
fetchFormattedReportsRemote status 500Lanca PdfService.fetchFormattedReportsRemote failed
fetchFormattedReportByIdRemote status 200Retorna relatorio especifico
fetchFormattedReportByIdRemote status 404Lanca PdfService.fetchFormattedReportByIdRemote failed

Mocks

Localizacao: __mocks__/pdf.mock.ts

  • formattedReportResponseMock - resposta paginada mockada com relatorios formatados

Instancia

Localizacao: services/pdf/pdf.service.instance.ts

import { pdfService } from "@/services/pdf/pdf.service.instance";