JavaScript backend code for downloading transaction PDFs as a ZIP file

const buttonAction = async (base64Values) => {
    //let base64Values be the array of object contain transaction number and base64 value of transaction PDFs
    const filenameSet = new Set();
    base64Values.forEach((data, index) => {
        const byteCharacters = atob(data.base64Value);
        const byteNumbers = new Array(byteCharacters.length);
        for (let i = 0; i < byteCharacters.length; i++) {
            byteNumbers[i] = byteCharacters.charCodeAt(i);
        }
        const byteArray = new Uint8Array(byteNumbers);
        const pdfBlob = new Blob([byteArray], { type: "application/pdf" });
        let baseFileName = this.customRecrodDetails.find(obj => obj["internalid"].value === data.internalid)["Document Number"].value;
        let fileName = `${baseFileName}.pdf`;
        let count = 1;


        // Append a number if filename already exists
        while (filenameSet.has(fileName)) {
            fileName = `${baseFileName} (${count}).pdf`;
            count++;
        }
        filenameSet.add(fileName); // Add the filename to the set
        zip.file(fileName, pdfBlob);
    });
    const zipBlob = await zip.generateAsync({ type: "blob" });
    const link = document.createElement("a");
    link.href = URL.createObjectURL(zipBlob);
    link.download = `Bulk File.zip`;
    link.click();
    URL.revokeObjectURL(link.href);
}

Leave a comment

Your email address will not be published. Required fields are marked *