<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script><script src="https://unpkg.com/pdf-lib/dist/pdf-lib.min.js"></script><inputtype="file"id="upload"accept=".pdf"/><buttononclick="compressPDF()">Compress & Download</button><script>asyncfunctioncompressPDF(){constfile=document.getElementById('upload').files[0];if(!file)returnalert("Please select a PDF!");// 1. Load the PDF using pdf.jsconstarrayBuffer=awaitfile.arrayBuffer();constpdf=awaitpdfjsLib.getDocument(arrayBuffer).promise;// Initialize jsPDF (The builder)const{jsPDF}=window.jspdf;constnewPdf=newjsPDF();// 2. Loop through every pagefor(leti=1;i<=pdf.numPages;i++){constpage=awaitpdf.getPage(i);// Determine scale (lower scale = smaller file but blurrier)constviewport=page.getViewport({scale:1});// Create a temporary canvas to render the pageconstcanvas=document.createElement('canvas');constctx=canvas.getContext('2d');canvas.width=viewport.width;canvas.height=viewport.height;// Render page to canvasawaitpage.render({canvasContext:ctx,viewport:viewport}).promise;// 3. Compress: Convert canvas to JPEG with 0.5 quality (50%)constimgData=canvas.toDataURL('image/jpeg',0.5);// 4. Add image to the new PDFif(i>1)newPdf.addPage();constpdfWidth=newPdf.internal.pageSize.getWidth();constpdfHeight=newPdf.internal.pageSize.getHeight();newPdf.addImage(imgData,'JPEG',0,0,pdfWidth,pdfHeight);}// 5. SavenewPdf.save("compressed.pdf");}asyncfunctionmergePDFs(file1,file2){const{PDFDocument}=PDFLib;// 1. Load both documentsconstpdf1Bytes=awaitfile1.arrayBuffer();constpdf2Bytes=awaitfile2.arrayBuffer();constpdf1=awaitPDFDocument.load(pdf1Bytes);constpdf2=awaitPDFDocument.load(pdf2Bytes);// 2. Copy all pages from PDF 2constcopiedPages=awaitpdf1.copyPages(pdf2,pdf2.getPageIndices());// 3. Add them to PDF 1copiedPages.forEach((page)=>pdf1.addPage(page));// 4. SaveconstmergedPdfBytes=awaitpdf1.save();// (Helper function to trigger download would go here)downloadBlob(mergedPdfBytes,"merged.pdf");}</script>