PDF em Branco com Axios

Olá, pessoal. Boa tarde!

Estou utilizando o Axios no NodeJS (NestJS) e está retornando um PDF em Branco para Baixar PDF do DANFE.

O problema não é na API da NuvemFiscal e acredito ser algo no próprio Axios.

Pesquisei na internet sobre “node axios retornar PDF em branco” e fiz dezenas de alterações nas configurações do Axios modificando responseType, Content-Type, Accept, alterei o @Header no NestJS, etc, mas sem sucesso.

Alguém se deparou em este problema?

Obrigado!

Utilizo o Axios no meu projeto sem problemas, como você está fazendo a chamada?

Obrigado pela ajuda Lucas!

Estou iniciando o Axios desta forma:

async getAPI() {
const api = axios.create({
baseURL: ${NUVEMFISCAL_API},
});

const token = await this.getToken();
if (token.status === 200) {
  api.defaults.headers['Authorization'] = `Bearer ${token.data.access_token}`;
} else {
  return Promise.reject(token);
}

api.interceptors.response.use(
  async (response) => {
    return response;
  },
  async (error) => {
    return Promise.reject(error);
  },
);

return api;

}

E depois para consumir a API NuvemFiscal:

const api = await this.getAPI();
result = await api.get(`/nfe/${idEnvio}/pdf`, this.paramsPDF());

Como está sendo retornado os parâmetros dessa função this.paramsPDF()?

Experimenta passar a propriedade responseType: 'arraybuffer' nas configurações da requisição e tenta salvar o retorno utilizando a lib fs para ver se funciona:

const fs = require('fs')

const api = await this.getAPI();

const result = await api.get(`/nfe/${idEnvio}/pdf`, { responseType: 'arraybuffer' });

fs.writeFileSync('./teste_nfe.pdf', result.data)

Deu certo Lucas!

Só não entendi porque no Insomnia se consumo a API da NuvemFiscal diretamente o PDF é apresentado corretamente. Porém se a resposta vem através do Axios o PDF é apresentado em branco.

De qualquer forma creio que dá certo enviar o “arraybuffer” para o front-end abrir o PDF.

Obrigado!

1 curtida

Ferramentas como Insomnia e Postman já fazem o tratamento automaticamente de arquivos binários, então isso acaba ficando transparente para você.

Este tópico foi fechado automaticamente 24 horas depois da última resposta. Novas respostas não são mais permitidas.