Home  ›  PDF Tools  ›  PDF to EPUB
📖

PDF to EPUB

Extract PDF page text and package it as an EPUB ebook with one chapter per page.

◉ 100% Free⚡ Local Processing◈ Browser Tool

✨ Choose File & Process

Each PDF page becomes a text chapter. Scanned/image-only PDFs need OCR first.
🔒 Files stay in your browser
⚡ Runs in your browser
⬇ Clear downloadable output

📖 How to use

  • Choose the required input file or content.
  • Set the available options.
  • Run the main action and let the browser process it.
  • Download and check the generated output.

⚡ Features

  • Free browser-based workflow.
  • No account required.
  • Focused controls for this conversion.
  • Designed for desktop and mobile browsers.

💡 Pro Tips

  • Keep the original file as a backup.
  • Use a modern browser for best compatibility.
  • Review the generated result before sharing it.
  • Large files can take longer to process.
')}); assets.forEach(a=>{manifest+='';z.file('OEBPS/'+a.href,a.data)}); z.file('OEBPS/nav.xhtml',''+tdhEscape(title)+''); z.file('OEBPS/content.opf','urn:uuid:'+uid+''+tdhEscape(title)+'en'+manifest+''+spine+''); return z.generateAsync({type:'blob',mimeType:'application/epub+zip',compression:'DEFLATE'}); } pdfjsLib.GlobalWorkerOptions.workerSrc='https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js'; go.onclick=async()=>{tdhError('');try{const f=file.files[0];if(!f)throw Error('Choose a PDF file.');const pdf=await pdfjsLib.getDocument({data:new Uint8Array(await f.arrayBuffer())}).promise,chap=[];for(let i=1;i<=pdf.numPages;i++){tdhStatus('Extracting page '+i+' of '+pdf.numPages+'…');const p=await pdf.getPage(i),tc=await p.getTextContent(),t=tc.items.map(x=>x.str).join(' ').replace(/\s+/g,' ').trim();chap.push({title:'Page '+i,html:'

Page '+i+'

'+tdhEscape(t||'[No extractable text on this page]')+'

'})}const blob=await makeEpub(tdhBase(f.name).replace(/-/g,' '),chap);tdhDownload(blob,tdhBase(f.name)+'.epub');tdhStatus('EPUB created with '+chap.length+' chapter(s).');}catch(e){tdhError(e.message||String(e))}};