base-64-zip2

by velo_ninja

HTML

<!DOCTYPE html>
<html>
<head>
  <title>Multiple PDFs/Base64 to Zip</title>
</head>
<body>
  <input type="file" id="pdfFile" accept=".pdf" multiple>
  <textarea id="base64Input" rows="5" cols="50" placeholder="Enter Base64 strings"></textarea>
  <button onclick="addFiles()">Add Files</button>
  <button onclick="addBase64()">Add Base64 Package</button>
  <button onclick="downloadZip()">Download All as Zip</button>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.5.0/jszip.min.js"></script>
  <script>
    var files = [];
    var base64Packages = [];

    function addFiles() {
      var input = document.getElementById('pdfFile');
      var selectedFiles = input.files;
      
      for (var i = 0; i < selectedFiles.length; i++) {
        files.push(selectedFiles[i]);
      }

      console.log('Files added:', files);
    }

    function addBase64() {
      var base64Input = document.getElementById('base64Input').value.trim();
      if (base64Input) {
        base64Packages.push(base64Input);

        console.log('Base64 package added:', base64Input);
        document.getElementById('base64Input').value = ''; // Clear input after adding
      } else {
        alert('Please enter a Base64 string.');
      }
    }

    function downloadZip() {
      if (files.length === 0 && base64Packages.length === 0) {
        alert('No files or Base64 packages added.');
        return;
      }

      var zip = new JSZip();

      // Add files
      files.forEach(function(file, index) {
        var reader = new FileReader();
        
        reader.onload = function(e) {
          zip.file(file.name, e.target.result);
          if (index === files.length - 1) {
            processBase64Packages(zip);
          }
        };
        
        reader.readAsDataURL(file);
      });

      // If no files, directly process base64 packages
      if (files.length === 0) {
        processBase64Packages(zip);
      }
    }

    function processBase64Packages(zip) {
     ...