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
| Metodo | Endpoint | Descricao |
|---|---|---|
| POST | /api/v1/document/pdf | Download de documento PDF online (middleware) |
| GET | /relatorioFormatado | Lista 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
| Nome | Tipo | Obrigatorio |
|---|---|---|
params | CreateOrderPdfParams | Nao |
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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
nuNota ou numNota | string | Sim | Numero 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
| Status | Descricao |
|---|---|
| 4xx/5xx | Lanca Error: PdfService.downloadPdfOnline failed: {status} |
fetchFormattedReportsRemote(params)
Busca relatorios formatados disponiveis com suporte a paginacao.
Parametros
| Nome | Tipo | Obrigatorio |
|---|---|---|
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
| Status | Descricao |
|---|---|
| 4xx/5xx | Lanca Error: PdfService.fetchFormattedReportsRemote failed: {status} |
fetchFormattedReportByIdRemote(id)
Busca um relatorio formatado especifico pelo ID.
Parametros
| Nome | Tipo | Obrigatorio |
|---|---|---|
id | string | Sim |
Retorno: Promise<FormattedReport>
Exemplo
const report = await pdfService.fetchFormattedReportByIdRemote("123");
console.log(report.nrRfe); // 123
console.log(report.descricao); // "Descricao do relatorio 1"
Erros
| Status | Descricao |
|---|---|
| 4xx/5xx | Lanca 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
| Subservico | Localizacao | Descricao |
|---|---|---|
DigitalCatalogPdfService | services/pdf/digital-catalog-pdf.service.ts | Geracao de catalogo digital em PDF com imagens de produtos |
SalePdfService | services/pdf/sale/sale.pdf.service.ts | Geracao de PDF detalhado de vendas com itens e totalizadores |
Componentes Relacionados
| Componente | Descricao |
|---|---|
buildQueryParams | Helper para serializar parametros de query em requisicoes GET |
apiWithoutAccessToken | Instancia Axios sem token de autenticacao |
expo-file-system | Gerenciamento de sistema de arquivos para salvar PDFs localmente |
pdf-lib | Biblioteca 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
| Cenario | Resultado esperado |
|---|---|
createOrderPdfBase64 com parametros validos | Retorna string Base64 de PDF valido |
createOrderPdfBase64 sem parametros | Gera PDF com valores padrao |
downloadPdfOnline status 200 | Retorna URI do arquivo salvo localmente |
downloadPdfOnline status 400 | Lanca PdfService.downloadPdfOnline failed |
fetchFormattedReportsRemote status 200 | Retorna formattedReportResponseMock.content |
fetchFormattedReportsRemote status 500 | Lanca PdfService.fetchFormattedReportsRemote failed |
fetchFormattedReportByIdRemote status 200 | Retorna relatorio especifico |
fetchFormattedReportByIdRemote status 404 | Lanca 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";