Preciso de ajuda com meu código.
A função JsontoBase64 recebe um json (parâmetro chamado jsonobj) que contém um pdf codificado em base64 (campo chamado "BytesBoleto") entre muitos outros campos.
Para cada ocorrência de "BytesBoleto", tenho que salvar um arquivo PDF chamado boletoXXX.pdf (onde XXX é 1 para a primeira ocorrência, 2 para a segunda, etc.) na área de trabalho do usuário.
Aqui está meu código:
function Base64toPDFandSave (base64String, filename) {
const fs = require('fs');
const path = require('path');
// Remove the prefix if it exists
const base64Data = base64String.replace(/^data:application\/pdf;base64,/, "");
// Define the path to save the PDF file on the user's desktop
const desktopPath = path.join(require('os').homedir(), 'Desktop');
const filePath = path.join(desktopPath, filename);
// Write the PDF file
fs.writeFile(filePath, base64Data, 'base64', (err) => {
if (err) {
console.error('Error saving the file:', err);
} else {
console.log('PDF file saved successfully at:', filePath);
}
});
}
function JsontoBase64 (jsonData, filename) {
// Verifica se jsonData é um objeto
if (typeof jsonData !== 'object' || jsonData === null) {
throw new Error("Entrada inválida: deve ser um objeto JSON.");
}
// Função recursiva para percorrer o JSON e encontrar os campos "BytesBoleto"
function procurarBytesBoleto(obj, fname, findex) {
for (const key in obj) {
console.log("......")
console.log(key + "::" + findex.toString());
if (obj.hasOwnProperty(key)) {
if (key === 'BytesBoleto' && typeof obj[key] === 'string') {
findex= findex+1;
console.log("BytesBoleto:"+findex.toString());
Base64toPDFandSave(obj[key], fname+findex.toString()+'.pdf');
} else if (typeof obj[key] === 'object') {
console.log("Recursiva:"+findex.toString());
procurarBytesBoleto(obj[key], fname, findex); // Chama a função recursivamente
}
}
}
}
procurarBytesBoleto(jsonData, filename, 0);
}
JsontoBase64 (jsonobj, 'boleto');
Meu problema é: após a execução, deveria ser salvo boleto1.pdf, boleto2.pdf, boleto3.pdf e assim por diante, mas os arquivos são todos salvos com os nomes boleto1.pdf (que está errado) - o índice não aumentou (incremento).
Você poderia me ajudar a encontrar o erro na minha função recorrente (recursão)?
Obrigado pela ajuda