<!doctypehtml><!-- PDF to TXT 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 TXT</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}.file-block{background-color:#f9f9f9;padding:1em;border-radius:.5em;text-align:center;width:200px;box-shadow:0 4px 6px rgba(0,0,0,.1)}.download-container{margin-top:20px;text-align:center}.download-btn{display:inline-block;border:2px solid #1cab26;background-color:#1cab26;color:#fff;text-decoration:none;padding:.5em 1em;font-size:1em;border-radius:.3em;cursor:pointer;display:none}.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 here or use the upload button below.</p><input accept=.pdf id=file-input type=file> <label for=file-input>Upload PDF File</label><div class=warning id=warning-message></div><div class=container id=file-container></div><div class=download-container><a class=download-btn href=# id=download-txt>Download TXT</a></div></div></div><!-- Include pdf.js Library --><script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.min.js"></script><script>const fileInput=document.getElementById("file-input");const fileContainer=document.getElementById("file-container");const warningMessage=document.getElementById("warning-message");const downloadTxtButton=document.getElementById("download-txt");document.getElementById("drop-zone").addEventListener("dragover",(event)=>{event.preventDefault();event.target.classList.add("drag-over")});document.getElementById("drop-zone").addEventListener("dragleave",(event)=>{event.target.classList.remove("drag-over")});document.getElementById("drop-zone").addEventListener("drop",(event)=>{event.preventDefault();event.target.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){warningMessage.style.display="none";fileContainer.innerHTML="";downloadTxtButton.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.type!=="application/pdf"){warningMessage.textContent="The uploaded file is not a PDF. Please upload a valid PDF file.";warningMessage.style.display="block";return}
const reader=new FileReader();reader.onload=async()=>{const pdfData=new Uint8Array(reader.result);try{const pdf=await pdfjsLib.getDocument({data:pdfData}).promise;let extractedText="";for(let i=1;i<=pdf.numPages;i++){const page=await pdf.getPage(i);const textContent=await page.getTextContent();textContent.items.forEach(item=>{extractedText+=item.str+"\n"});if(i<pdf.numPages)extractedText+="\n--- Page Break ---\n\n"}
const fileBlock=document.createElement("div");fileBlock.classList.add("file-block");const textContentElement=document.createElement("p");textContentElement.textContent=file.name;fileBlock.appendChild(textContentElement);fileContainer.appendChild(fileBlock);const blob=new Blob([extractedText],{type:"text/plain"});downloadTxtButton.style.display="inline-block";downloadTxtButton.href=URL.createObjectURL(blob);downloadTxtButton.download=file.name.replace(".pdf",".txt")}catch(error){warningMessage.textContent="Failed to process the PDF file. Please try again.";warningMessage.style.display="block"}};reader.readAsArrayBuffer(file)}</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>