{"id":55,"date":"2026-07-01T13:33:45","date_gmt":"2026-07-01T13:33:45","guid":{"rendered":"https:\/\/freewebtools.co.in\/?page_id=55"},"modified":"2026-07-09T13:38:48","modified_gmt":"2026-07-09T13:38:48","slug":"pdf-merge","status":"publish","type":"page","link":"https:\/\/freewebtools.co.in\/index.php\/pdf-merge\/","title":{"rendered":"PDF Merge"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Merge multiple PDF files into one document online.<\/p>\n\n\n\n<div id=\"quantum-pdf-app\">\n    <style>\n        \/* Scoped styles: These will NEVER affect your theme's global elements *\/\n        #quantum-pdf-app, #quantum-pdf-app * { box-sizing: border-box; }\n        #quantum-pdf-app { font-family: sans-serif; max-width: 800px; margin: 20px auto; padding: 20px; background: #fff; border-radius: 15px; border: 1px solid #ddd; }\n        \n        #quantum-pdf-app h2 { color: #333; margin-top: 0; }\n        #quantum-pdf-app .q-dropzone { border: 2px dashed #0073aa; padding: 30px; text-align: center; color: #0073aa; cursor: pointer; border-radius: 10px; margin: 15px 0; }\n        #quantum-pdf-app .q-btn { background: #0073aa; color: #fff; border: none; padding: 12px 20px; border-radius: 5px; cursor: pointer; width: 100%; font-size: 16px; }\n        #quantum-pdf-app .q-btn:disabled { background: #ccc; cursor: not-allowed; }\n        #quantum-pdf-app .q-item { display: flex; justify-content: space-between; padding: 8px; border-bottom: 1px solid #eee; font-size: 14px; }\n    <\/style>\n\n    <div class=\"q-content\">\n        <h2>QuantumPDF Merger<\/h2>\n        <input type=\"file\" id=\"q-file-input\" accept=\"application\/pdf\" multiple style=\"display: none;\">\n        <div class=\"q-dropzone\" id=\"q-dropzone\">Click to select or drop PDFs here<\/div>\n        <div id=\"q-queue\"><\/div>\n        <button class=\"q-btn\" id=\"q-merge-btn\" style=\"display:none;\">Merge PDFs<\/button>\n    <\/div>\n\n    <script src=\"https:\/\/unpkg.com\/pdf-lib@1.17.1\/dist\/pdf-lib.min.js\"><\/script>\n    <script>\n    (function() {\n        const root = document.getElementById('quantum-pdf-app');\n        const input = root.querySelector('#q-file-input');\n        const zone = root.querySelector('#q-dropzone');\n        const queue = root.querySelector('#q-queue');\n        const btn = root.querySelector('#q-merge-btn');\n        let fileQueue = [];\n\n        zone.onclick = () => input.click();\n        input.onchange = (e) => {\n            Array.from(e.target.files).forEach(f => fileQueue.push(f));\n            renderQueue();\n        };\n\n        function renderQueue() {\n            queue.innerHTML = '';\n            fileQueue.forEach((f, i) => {\n                const div = document.createElement('div');\n                div.className = 'q-item';\n                div.innerHTML = `<span>${f.name}<\/span> <span style=\"cursor:pointer\" onclick=\"window.removeQ(${i})\">\u274c<\/span>`;\n                queue.appendChild(div);\n            });\n            btn.style.display = fileQueue.length > 1 ? 'block' : 'none';\n        }\n\n        window.removeQ = (i) => { fileQueue.splice(i, 1); renderQueue(); };\n\n        btn.onclick = async () => {\n            const { PDFDocument } = PDFLib;\n            const merged = await PDFDocument.create();\n            for (let f of fileQueue) {\n                const doc = await PDFDocument.load(await f.arrayBuffer());\n                const pages = await merged.copyPages(doc, doc.getPageIndices());\n                pages.forEach(p => merged.addPage(p));\n            }\n            const pdfBytes = await merged.save();\n            const blob = new Blob([pdfBytes], { type: 'application\/pdf' });\n            const a = document.createElement('a');\n            a.href = URL.createObjectURL(blob);\n            a.download = 'merged-document.pdf';\n            a.click();\n        };\n    })();\n    <\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Merge multiple PDF files into one document online. QuantumPDF Merger Click to select or drop PDFs here Merge PDFs<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-55","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":3,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/55\/revisions"}],"predecessor-version":[{"id":230,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/55\/revisions\/230"}],"wp:attachment":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/media?parent=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}