<!doctypehtml><!-- PDF to JPG By Fullintro - https://fullintro.com --><html lang=en><meta charset=UTF-8><meta content="width=device-width,initial-scale=1"name=viewport><title>PDF to JPG</title><link href="https://fonts.googleapis.com/css2?family=Rubik&display=swap"rel=stylesheet><style>*{padding:0;margin:0;box-sizing:border-box;font-family:Poppins,sans-serif}body{background-color:#fff}.main{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:1em}.wrapper{text-align:center;width:min(90%,800px);background-color:#f0f0f0;border:6px solid #bfbfbf;padding:2em 3em;border-radius:10px;transition:box-shadow .3s ease-in-out}.wrapper.drag-over{box-shadow:0 0 20px rgba(0,0,0,.3)}h1{font-size:40px;color:#5a5a5a}p{color:#5a5a5a;font-size:16px}input[type=file]{display:none}label{display:block;position:relative;background-color:#1cab26;color:#fff;font-size:16px;text-align:center;width:250px;padding:16px 0;border-radius:.3em;margin:16px auto;cursor:pointer}.container{display:flex;flex-wrap:wrap;justify-content:center;gap:1em;margin-top:20px}.image-block{background-color:#f9f9f9;padding:1em;border-radius:.5em;text-align:center;width:200px;box-shadow:0 4px 6px rgba(0,0,0,.1);position:relative}img{display:block;max-width:100%;margin-bottom:1em}a{display:inline-block;border:2px solid #1cab26;background-color:#1cab26;color:#fff;text-decoration:none;padding:.5em 1em;font-size:.9em;border-radius:.3em;margin-top:.5em}.warning{color:red;font-size:14px;margin-top:20px;display:none}</style><div class=main><div class=wrapper id=drop-zone><p>Drag & drop a PDF file here or use the upload button below.</p><input accept=application/pdf id=file-input type=file> <label for=file-input>Upload PDF File</label><div class=warning id=warning-message>Please upload only one PDF file at a time.</div><div class=container id=image-container></div></div></div><!-- Include PDF.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.14.305/pdf.min.js"></script><script>const fileInput=document.getElementById("file-input");const imageContainer=document.getElementById("image-container");const dropZone=document.getElementById("drop-zone");const warningMessage=document.getElementById("warning-message");dropZone.addEventListener("dragover",(event)=>{event.preventDefault();dropZone.classList.add("drag-over")});dropZone.addEventListener("dragleave",()=>{dropZone.classList.remove("drag-over")});dropZone.addEventListener("drop",(event)=>{event.preventDefault();dropZone.classList.remove("drag-over");const files=Array.from(event.dataTransfer.files);handleFiles(files)});fileInput.addEventListener("change",()=>{const files=Array.from(fileInput.files);handleFiles(files)});function handleFiles(files){imageContainer.innerHTML="";warningMessage.style.display="none";if(files.length>1){warningMessage.textContent="Please upload only one PDF file at a time.";warningMessage.style.display="block";return}
const file=files[0];if(!file||file.type!=="application/pdf"){warningMessage.textContent="Invalid file. Please upload a valid PDF file.";warningMessage.style.display="block";return}
const reader=new FileReader();reader.readAsArrayBuffer(file);reader.onload=async()=>{const pdfData=new Uint8Array(reader.result);const pdf=await pdfjsLib.getDocument(pdfData).promise;for(let i=1;i<=pdf.numPages;i++){const page=await pdf.getPage(i);const viewport=page.getViewport({scale:2});const canvas=document.createElement("canvas");const context=canvas.getContext("2d");canvas.width=viewport.width;canvas.height=viewport.height;await page.render({canvasContext:context,viewport:viewport}).promise;const jpgDataUrl=canvas.toDataURL("image/jpeg");const imageBlock=document.createElement("div");imageBlock.classList.add("image-block");const img=document.createElement("img");img.src=jpgDataUrl;img.alt=`Page ${i} of ${file.name}`;const downloadLink=document.createElement("a");downloadLink.textContent=`Download Page ${i}`;downloadLink.href=jpgDataUrl;downloadLink.download=`${file.name.replace(/\.[^/.]+$/, "")}_page${i}.jpg`;imageBlock.appendChild(img);imageBlock.appendChild(downloadLink);imageContainer.appendChild(imageBlock)}}}</script><script>document.addEventListener('contextmenu',function(event){event.preventDefault()});</script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.2/iframeResizer.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.2/iframeResizer.contentWindow.min.js"></script></body></html>