<!doctypehtml><!-- TXT to PDF By Fullintro - https://fullintro.com --><html lang=en><meta charset=UTF-8><meta content="width=device-width,initial-scale=1"name=viewport><title>TXT to PDF</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 text file here or use the upload button below.</p><input accept=.txt id=file-input type=file> <label for=file-input>Upload Text 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-pdf>Download PDF</a></div></div></div><!-- Include jsPDF Library --><script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script><script>const fileInput=document.getElementById("file-input");const fileContainer=document.getElementById("file-container");const warningMessage=document.getElementById("warning-message");const downloadPdfButton=document.getElementById("download-pdf");const{jsPDF}=window.jspdf;let pdf=null;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="";downloadPdfButton.style.display="none";if(files.length>1){warningMessage.textContent="Please upload only one text file at a time.";warningMessage.style.display="block";return}
const file=files[0];if(file.type!=="text/plain"){warningMessage.textContent="The uploaded file is not a text file. Please upload a valid .txt file.";warningMessage.style.display="block";return}
pdf=new jsPDF();const reader=new FileReader();reader.onload=()=>{const fileContent=reader.result;const fileBlock=document.createElement("div");fileBlock.classList.add("file-block");const textContent=document.createElement("p");textContent.textContent=file.name;fileBlock.appendChild(textContent);fileContainer.appendChild(fileBlock);const margin=10;const pageHeight=pdf.internal.pageSize.height;let yOffset=margin;const lines=pdf.splitTextToSize(fileContent,180);lines.forEach(line=>{if(yOffset+10>pageHeight){pdf.addPage();yOffset=margin}
pdf.text(line,margin,yOffset);yOffset+=10});downloadPdfButton.style.display="inline-block";downloadPdfButton.href=pdf.output("bloburl");downloadPdfButton.download=`${file.name.replace(".txt", "")}.pdf`};reader.readAsText(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>