Мой API в NodeJS отвечает с помощью файла PDF, но мой пользовательский интерфейс, использующий реагирование, не может получить этот файл и сделать его «загружаемым», поэтому я пытаюсь преобразовать его в базу 64. Вопрос в том, как?
Я пытаюсь использовать этот npm пакет следующим образом:
const bytes = await utf8.encode(bill)
const encoded = await base64.encode(bytes)
console.log(typeof encoded)
console.log(typeof bytes)
И в этом проекте я использую этот модуль тоже , и он использовать PDFkit для создания заготовки, и я использую Adonis в этом проекте
const duplicata = await Duplicata.findBy('id', params.id)
const banco = await duplicata.banco().fetch()
const empresa = await duplicata.empresa().fetch()
const cliente = await Cliente.findBy('cnpj', auth.user.cnpj)
const clienteEnderecos = await cliente.clienteEnderecos().fetch()
const endereco = await clienteEnderecos.toJSON().find(endereco => {
if (endereco.tipo_endereco === 'COBRANCA') {
return endereco
}
if (endereco.tipo_endereco === 'PRINCIPAL') {
return endereco
}
if (endereco.tipo_endereco === 'ENTREGA') {
return endereco
}
})
empresa.bairro = empresa.bairro.trim()
cliente.nome_razao = cliente.nome_razao.trim()
cliente.sobrenome_fantasia = cliente.sobrenome_fantasia.trim()
const boleto = {
banco: Utils.getBankModel(banco.cod_banco),
pagador: {
Nome: cliente.nome_razao + ' ' + cliente.sobrenome_fantasia,
RegistroNacional: cliente.cnpj,
Logradouro: endereco.endereco,
Bairro: endereco.bairro,
Uf: endereco.uf,
Cep: endereco.cep
},
beneficiario: {
dadosBancarios: {
carteira: banco.carteira,
agencia: banco.agencia,
agenciaDigito: banco.digito,
conta: banco.conta,
contaDigito: banco.digito_conta,
nossoNumero: duplicata.nro_documento.slice(0, -1),
nossoNumeroDigito: duplicata.nro_documento && duplicata.nro_documento.charAt(duplicata.nro_documento.length - 1)
},
dadosEndereco: {
descricao: empresa.descricao,
endereco: empresa.endereco,
bairro: empresa.bairro,
cidade: empresa.cidade,
uf: empresa.uf,
cep: empresa.cep,
numero: empresa.numero,
cnpj_empresa: empresa.cnpj_empresa
}
},
boleto: {
numeroDocumento: duplicata.nro_duplicata + ' ' + duplicata.serie_duplicata,
especieDocumento: 'DM',
valor: parseFloat(duplicata.valor_duplicata),
datas: {
vencimento: moment(duplicata.vencimento_duplicata, 'mm-dd-yyyy'),
processamento: moment(duplicata.emissao_duplicata, 'mm-dd-yyyy'),
documentos: moment(duplicata.emissao_duplicata, 'mm-dd-yyyy')
}
},
instrucao: {
Juros: parseFloat(duplicata.juros_mora)
}
}
const novoBoleto = Utils.gerarBoleto(boleto)
try {
if (!fs.existsSync((Helpers.tmpPath('boletos')))) fs.mkdirSync('./tmp/boletos')
const stream = fs.createWriteStream(Helpers.tmpPath('boletos/boleto.pdf'))
const boleto = await new Gerador.boleto.Gerador(novoBoleto).gerarPDF({
creditos: '',
stream: stream
})
boleto.end()
const bytes = await utf8.encode(boleto)
const encoded = await base64.encode(bytes)
console.log(encoded)
console.log(bytes)
response.type('pdf')
response.implicitEnd = false
boleto.pipe(response.response)
большинство переменных в этом пакете на португальском
, но моя консоль я не могу получить никакого ответа, просто пустая строка , только в закодированной переменной, но только я не кодирую с помощью кодера utf8, но ответ не соответствует ожиданиям (ответ base64).
Я не знаю, как показать свой код таким образом, я могу открыть любые предложения или какую информацию мне нужно показать, чтобы лучше найти решение, tks: D