{"id":131,"date":"2026-09-17T05:57:52","date_gmt":"2026-09-17T05:57:52","guid":{"rendered":"https:\/\/filejp.in\/?page_id=131"},"modified":"2026-09-17T06:18:39","modified_gmt":"2026-09-17T06:18:39","slug":"pdf-split-separate-pages","status":"publish","type":"page","link":"https:\/\/filejp.in\/index.php\/pdf-split-separate-pages\/","title":{"rendered":"PDF Split \/ Separate Pages"},"content":{"rendered":"<!--themify_builder_content-->\n<div id=\"themify_builder_content-131\" data-postid=\"131\" class=\"themify_builder_content themify_builder_content-131 themify_builder tf_clear\">\n                    <div  data-lazy=\"1\" class=\"module_row themify_builder_row tb_1d98315 tb_first tf_w\">\n                        <div class=\"row_inner col_align_top tb_col_count_1 tf_box tf_rel\">\n                        <div  data-lazy=\"1\" class=\"module_column tb-column col-full tb_dz6r316 first\">\n                    <!-- module text -->\n<div  class=\"module module-text tb_j89k560   \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>PDF Split \/ Separate Pages<\/p>    <\/div>\n<\/div>\n<!-- \/module text -->        <\/div>\n                        <\/div>\n        <\/div>\n                        <div  data-lazy=\"1\" class=\"module_row themify_builder_row tb_jtmn33 tf_w\">\n                        <div class=\"row_inner col_align_top tb_col_count_1 tf_box tf_rel\">\n                        <div  data-lazy=\"1\" class=\"module_column tb-column col-full tb_sf7h33 first\">\n                    <!-- module plain text -->\n<div  class=\"module module-plain-text tb_45dc770 \" data-lazy=\"1\">\n        <div class=\"tb_text_wrap\">\n    <!-- PDF.js & PDF-Lib Libraries -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/2.16.105\/pdf.min.js\"><\/script>\n<script src=\"https:\/\/unpkg.com\/pdf-lib@1.17.1\/dist\/pdf-lib.min.js\"><\/script>\n\n<div style=\"max-width: 650px; margin: 20px auto; padding: 20px; border: 1px solid #e0e0e0; border-radius: 12px; font-family: Arial, sans-serif; background: #ffffff; text-align: center;\">\n\n    <h2 style=\"margin-top: 0; color: #2c3e50;\">Visual PDF Splitter<\/h2>\n    <p style=\"color: #666; font-size: 14px;\">PDF Upload karein, pages preview me dekhein aur jo chahiye unhe select karke download karein.<\/p>\n\n    <!-- Upload Button -->\n    <input type=\"file\" id=\"visualPdfInput\" accept=\"application\/pdf\" style=\"display: none;\" onchange=\"loadVisualPdf(this)\">\n    <label for=\"visualPdfInput\" style=\"background-color: #2271b1; color: #ffffff; padding: 12px 20px; border-radius: 6px; cursor: pointer; display: inline-block; font-weight: bold; font-size: 14px;\">\ud83d\udcc1 Select PDF File<\/label>\n\n    <div id=\"visualStatusMsg\" style=\"margin-top: 15px; font-weight: bold; font-size: 14px; color: #0073aa;\"><\/div>\n\n    <!-- Controls Area -->\n    <div id=\"visualControls\" style=\"display: none; margin-top: 20px; border-top: 1px solid #eee; padding-top: 15px;\">\n        \n        <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; background: #f8f9fa; padding: 10px 15px; border-radius: 6px;\">\n            <span style=\"font-size: 14px; font-weight: bold; color: #333;\">Total Pages: <span id=\"visualTotalPages\" style=\"color:#2271b1;\">0<\/span><\/span>\n            <div>\n                <button onclick=\"selectAllPages(true)\" style=\"background: #e5e5e5; border: none; padding: 6px 12px; border-radius: 4px; cursor: pointer; font-size: 12px; font-weight: bold; margin-right: 5px;\">Select All<\/button>\n                <button onclick=\"selectAllPages(false)\" style=\"background: #e5e5e5; border: none; padding: 6px 12px; border-radius: 4px; cursor: pointer; font-size: 12px; font-weight: bold;\">Deselect All<\/button>\n            <\/div>\n        <\/div>\n\n        <!-- Thumbnail Preview Grid -->\n        <div id=\"pdfPagesGrid\" style=\"display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 12px; max-height: 380px; overflow-y: auto; padding: 10px; border: 1px solid #eee; border-radius: 8px; background: #fafafa;\"><\/div>\n\n        <!-- Download Button -->\n        <button onclick=\"downloadSelectedPages()\" style=\"width: 100%; margin-top: 20px; background-color: #46b450; color: #ffffff; padding: 13px; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; font-size: 16px; box-shadow: 0 3px 6px rgba(0,0,0,0.1);\">\u2702\ufe0f Download Selected Pages<\/button>\n\n    <\/div>\n\n<\/div>\n\n<script>\npdfjsLib.GlobalWorkerOptions.workerSrc = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/2.16.105\/pdf.worker.min.js';\n\nvar rawPdfBytes = null;\nvar totalPagesCount = 0;\nvar baseFileName = \"extracted\";\n\nasync function loadVisualPdf(input) {\n    if (!input.files || !input.files[0]) return;\n\n    var file = input.files[0];\n    baseFileName = file.name.substring(0, file.name.lastIndexOf('.')) || 'extracted';\n\n    var statusMsg = document.getElementById('visualStatusMsg');\n    var controls = document.getElementById('visualControls');\n    var pagesGrid = document.getElementById('pdfPagesGrid');\n\n    statusMsg.style.color = '#0073aa';\n    statusMsg.innerText = '\u23f3 Loading PDF Pages Preview...';\n    controls.style.display = 'none';\n    pagesGrid.innerHTML = '';\n\n    var reader = new FileReader();\n    reader.onload = async function(e) {\n        rawPdfBytes = e.target.result;\n\n        try {\n            var typedarray = new Uint8Array(rawPdfBytes);\n            var pdfDoc = await pdfjsLib.getDocument(typedarray).promise;\n            \n            totalPagesCount = pdfDoc.numPages;\n            document.getElementById('visualTotalPages').innerText = totalPagesCount;\n\n            \/\/ Render Page Previews\n            for (var pageNum = 1; pageNum <= totalPagesCount; pageNum++) {\n                await renderPageThumbnail(pdfDoc, pageNum, pagesGrid);\n            }\n\n            controls.style.display = 'block';\n            statusMsg.style.color = '#46b450';\n            statusMsg.innerText = '\u2705 PDF Loaded! Pages niche preview ho rahe hain.';\n        } catch (err) {\n            statusMsg.style.color = '#dc3232';\n            statusBox.innerText = '\u274c PDF load hone me issue aaya. Password protected file ho sakti hai.';\n        }\n    };\n    reader.readAsArrayBuffer(file);\n}\n\nasync function renderPageThumbnail(pdfDoc, pageNum, container) {\n    var page = await pdfDoc.getPage(pageNum);\n    var viewport = page.getViewport({ scale: 0.25 }); \/\/ Thumbnail scale\n\n    var card = document.createElement('div');\n    card.style.cssText = 'background: #fff; border: 2px solid #ddd; border-radius: 6px; padding: 6px; text-align: center; cursor: pointer; position: relative; transition: all 0.2s ease;';\n    card.onclick = function(e) {\n        if (e.target.tagName !== 'INPUT') {\n            var chk = card.querySelector('input');\n            chk.checked = !chk.checked;\n            toggleCardStyle(card, chk.checked);\n        }\n    };\n\n    var canvas = document.createElement('canvas');\n    var ctx = canvas.getContext('2d');\n    canvas.height = viewport.height;\n    canvas.width = viewport.width;\n    canvas.style.cssText = 'width: 100%; border: 1px solid #eee; border-radius: 4px;';\n\n    await page.render({ canvasContext: ctx, viewport: viewport }).promise;\n\n    var checkbox = document.createElement('input');\n    checkbox.type = 'checkbox';\n    checkbox.value = pageNum;\n    checkbox.checked = true; \/\/ Default selected\n    checkbox.style.cssText = 'margin-top: 6px; transform: scale(1.2); cursor: pointer;';\n    checkbox.onchange = function() {\n        toggleCardStyle(card, checkbox.checked);\n    };\n\n    var label = document.createElement('div');\n    label.innerText = 'Page ' + pageNum;\n    label.style.cssText = 'font-size: 11px; font-weight: bold; color: #555; margin-top: 2px;';\n\n    card.appendChild(canvas);\n    card.appendChild(checkbox);\n    card.appendChild(label);\n    toggleCardStyle(card, true);\n\n    container.appendChild(card);\n}\n\nfunction toggleCardStyle(card, isChecked) {\n    if (isChecked) {\n        card.style.borderColor = '#2271b1';\n        card.style.background = '#f0f6fc';\n    } else {\n        card.style.borderColor = '#ddd';\n        card.style.background = '#ffffff';\n    }\n}\n\nfunction selectAllPages(selectStatus) {\n    var checkboxes = document.querySelectorAll('#pdfPagesGrid input[type=\"checkbox\"]');\n    checkboxes.forEach(chk => {\n        chk.checked = selectStatus;\n        toggleCardStyle(chk.closest('div'), selectStatus);\n    });\n}\n\nasync function downloadSelectedPages() {\n    var checkboxes = document.querySelectorAll('#pdfPagesGrid input[type=\"checkbox\"]:checked');\n    if (checkboxes.length === 0) {\n        alert('Kripya kam se kam ek page select karein!');\n        return;\n    }\n\n    var selectedPages = Array.from(checkboxes).map(chk => parseInt(chk.value, 10));\n\n    var statusMsg = document.getElementById('visualStatusMsg');\n    statusMsg.style.color = '#0073aa';\n    statusMsg.innerText = '\u23f3 Split PDF generate ho rahi hai...';\n\n    try {\n        var srcPdf = await PDFLib.PDFDocument.load(rawPdfBytes);\n        var newPdf = await PDFLib.PDFDocument.create();\n\n        var zeroBasedIndices = selectedPages.map(p => p - 1);\n        var copiedPages = await newPdf.copyPages(srcPdf, zeroBasedIndices);\n        copiedPages.forEach(page => newPdf.addPage(page));\n\n        var pdfBytes = await newPdf.save();\n\n        var blob = new Blob([pdfBytes], { type: 'application\/pdf' });\n        var link = document.createElement('a');\n        link.href = URL.createObjectURL(blob);\n        link.download = baseFileName + '-selected.pdf';\n        link.click();\n\n        statusMsg.style.color = '#46b450';\n        statusMsg.innerText = '\u2705 Selected pages downloaded successfully!';\n    } catch (err) {\n        alert('PDF download karne me problem aayi.');\n    }\n}\n<\/script>    <\/div>\n<\/div>\n<!-- \/module plain text -->        <\/div>\n                        <\/div>\n        <\/div>\n                        <div  data-lazy=\"1\" class=\"module_row themify_builder_row tb_5phj767 tf_w\">\n                        <div class=\"row_inner col_align_top tb_col_count_1 tf_box tf_rel\">\n                        <div  data-lazy=\"1\" class=\"module_column tb-column col-full tb_7f9f767 first\">\n                    <!-- module text -->\n<div  class=\"module module-text tb_qlxi338   \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>Convert PDF Split \/ Separate Pages JPG, PNG and other images to PDF online for free. Fast, simple and easy-to-use Image to PDF converter.<\/p>    <\/div>\n<\/div>\n<!-- \/module text -->        <\/div>\n                        <\/div>\n        <\/div>\n        <\/div>\n<!--\/themify_builder_content-->","protected":false},"excerpt":{"rendered":"<p>PDF Split \/ Separate Pages Visual PDF Splitter PDF Upload karein, pages preview me dekhein aur jo chahiye unhe select [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-131","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/filejp.in\/index.php\/wp-json\/wp\/v2\/pages\/131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/filejp.in\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/filejp.in\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/filejp.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/filejp.in\/index.php\/wp-json\/wp\/v2\/comments?post=131"}],"version-history":[{"count":15,"href":"https:\/\/filejp.in\/index.php\/wp-json\/wp\/v2\/pages\/131\/revisions"}],"predecessor-version":[{"id":146,"href":"https:\/\/filejp.in\/index.php\/wp-json\/wp\/v2\/pages\/131\/revisions\/146"}],"wp:attachment":[{"href":"https:\/\/filejp.in\/index.php\/wp-json\/wp\/v2\/media?parent=131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}