I Love Tools

Word to PDF Converter | A4 Perfect Fidelity

Word to PDF Converter

A4 exact layout • Bangla supported

Direct Download
বাংলা / Bangla fully supported

Upload .docx, .txt — exact A4 layout with tables, images. Change any setting → auto re-convert.

Upload Document

.docx (best), .txt, .rtf, .doc (fallback)

Drop or tap to upload

Max 15MB

Browse files

Set all four margins to the same value

Top
Right
Bottom
Left

Settings change → auto re-convert

Live A4 Preview

Upload a document, then change any setting → auto convert

Pages fill preview area, settings applied instantly

${printPagesHtml} `); printWindow.document.close(); } async function downloadDirectPDF() { if (!convertedPagesHtml.length) { alert("No document converted. Please convert first."); return; } if (typeof window.jspdf === 'undefined' || typeof html2canvas === 'undefined') { alert("PDF libraries are still loading. Please wait a moment and try again."); return; } const { jsPDF } = window.jspdf; const tempContainer = document.createElement('div'); tempContainer.style.cssText = 'position:absolute;top:-9999px;left:-9999px;background-color:white;width:210mm;'; document.body.appendChild(tempContainer); const top = marginTop.value, right = marginRight.value, bottom = marginBottom.value, left = marginLeft.value; const fontSize = fontSizeSelect.value; const justify = justifyCheck.checked ? 'text-align: justify;' : ''; const paraSpacing = paraSpacingSelect.value; const watermarkHtml = watermarkCheck.checked ? `
Word to PDF Converter
` : ''; const langClassPrint = isBanglaMode ? 'bangla-font' : ''; const fontFamily = isBanglaMode ? "'Noto Sans Bengali', 'Hind Siliguri', sans-serif" : "'Inter', sans-serif"; let fullHtml = ''; for (let i = 0; i < convertedPagesHtml.length; i++) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = convertedPagesHtml[i]; const innerContentDiv = tempDiv.querySelector('.page-inner-content'); let innerHtml = innerContentDiv ? innerContentDiv.innerHTML : ''; if (!innerHtml) innerHtml = "Content"; const pageNumberSpan = pageNumbersCheck.checked ? `
${i + 1} / ${convertedPagesHtml.length}
` : ''; fullHtml += `
${watermarkHtml}
${innerHtml}
${pageNumberSpan}
`; } tempContainer.innerHTML = ` ${fullHtml} `; await new Promise(r => setTimeout(r, 150)); const pages = tempContainer.querySelectorAll('.pdf-page'); const pdf = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' }); let firstPageAdded = false; for (let idx = 0; idx < pages.length; idx++) { const page = pages[idx]; try { const canvas = await html2canvas(page, { scale: 3, backgroundColor: '#ffffff', useCORS: true, logging: false, windowWidth: 210 * 3.78, windowHeight: 297 * 3.78, }); const imgData = canvas.toDataURL('image/jpeg', 0.95); if (!firstPageAdded) { pdf.addImage(imgData, 'JPEG', 0, 0, 210, 297, undefined, 'FAST'); firstPageAdded = true; } else { pdf.addPage(); pdf.addImage(imgData, 'JPEG', 0, 0, 210, 297, undefined, 'FAST'); } } catch (e) { console.error("Page render error:", e); if (!firstPageAdded) { pdf.text(`Page ${idx + 1} - rendering error`, 20, 30); firstPageAdded = true; } else { pdf.addPage(); pdf.text(`Page ${idx + 1} - rendering error`, 20, 30); } } } document.body.removeChild(tempContainer); const fileName = (currentFile?.name.replace(/\.[^/.]+$/, '') || 'document') + '.pdf'; pdf.save(fileName); } function resetAllControls() { fontSizeSelect.value = '12pt'; paraSpacingSelect.value = '8'; justifyCheck.checked = true; pageNumbersCheck.checked = true; watermarkCheck.checked = false; languageSelect.value = 'auto'; marginTop.value = '20'; marginRight.value = '20'; marginBottom.value = '20'; marginLeft.value = '20'; uniformMargin.value = '20'; clearFile(); updateUniformMargin(); previewScale = 1; applyPreviewScale(); } // Event listeners fileInput.addEventListener('change', (e) => { if (e.target.files[0]) processSelectedFile(e.target.files[0]); }); // FIX: Always open file dialog when drop area is clicked (no guard clause) dropArea.addEventListener('click', () => { fileInput.click(); }); dropArea.addEventListener('dragover', (e) => { e.preventDefault(); dropArea.classList.add('dragover'); }); dropArea.addEventListener('dragleave', () => { dropArea.classList.remove('dragover'); }); dropArea.addEventListener('drop', (e) => { e.preventDefault(); dropArea.classList.remove('dragover'); const file = e.dataTransfer.files[0]; if (file && isValidFile(file)) { processSelectedFile(file); } else if (file) { const ext = getFileExtension(file); alert(`Unsupported format: .${ext}\nPlease use .docx, .txt, .rtf, or .doc files.`); } }); dropArea.addEventListener('keydown', (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); fileInput.click(); } }); removeBtn.addEventListener('click', clearFile); convertBtn.addEventListener('click', convertToPDF); printBtn.addEventListener('click', generatePrint); downloadDirectBtn.addEventListener('click', downloadDirectPDF); resetBtn.addEventListener('click', resetAllControls); fontSizeSelect.addEventListener('change', handleSettingChange); justifyCheck.addEventListener('change', handleSettingChange); pageNumbersCheck.addEventListener('change', handleSettingChange); watermarkCheck.addEventListener('change', handleSettingChange); paraSpacingSelect.addEventListener('change', handleSettingChange); languageSelect.addEventListener('change', handleSettingChange); marginTop.addEventListener('change', () => { updateUniformMargin(); handleSettingChange(); }); marginRight.addEventListener('change', () => { updateUniformMargin(); handleSettingChange(); }); marginBottom.addEventListener('change', () => { updateUniformMargin(); handleSettingChange(); }); marginLeft.addEventListener('change', () => { updateUniformMargin(); handleSettingChange(); }); uniformMargin.addEventListener('change', setUniformMargins); uniformMargin.addEventListener('input', () => { if (uniformMargin.value && !isNaN(parseInt(uniformMargin.value))) { setUniformMargins(); } }); let resizeDebounce = null; window.addEventListener('resize', () => { if (resizeDebounce) clearTimeout(resizeDebounce); resizeDebounce = setTimeout(() => { if (convertedPagesHtml.length > 0) { applyPreviewScale(); } }, 200); }); if (window.ResizeObserver) { const resizeObserver = new ResizeObserver(() => { if (convertedPagesHtml.length > 0 && !resizeDebounce) { resizeDebounce = setTimeout(() => { applyPreviewScale(); resizeDebounce = null; }, 150); } }); resizeObserver.observe(previewContainer); } updateUniformMargin(); applyPreviewScale(); window.addEventListener('load', () => { if (typeof mammoth === 'undefined') { console.warn("Mammoth.js not loaded. Word document conversion may not work."); } if (convertedPagesHtml.length > 0) { applyPreviewScale(); } }); console.log("Word to PDF Converter initialized successfully."); console.log("Supported formats: .docx, .txt, .rtf, .doc"); console.log("Mobile-optimized layout active."); })();
Scroll to Top