{"id":3908,"date":"2025-12-22T16:00:49","date_gmt":"2025-12-22T16:00:49","guid":{"rendered":"https:\/\/bkupdate.in\/?page_id=3908"},"modified":"2025-12-25T16:55:56","modified_gmt":"2025-12-25T16:55:56","slug":"signature-resizer-tool","status":"publish","type":"page","link":"https:\/\/bkupdate.in\/?page_id=3908","title":{"rendered":"Signature Resizer Tool"},"content":{"rendered":"\n<!-- Signature Resizer Tool - Scoped for WordPress -->\n<script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/cropperjs\/1.5.13\/cropper.min.css\">\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/cropperjs\/1.5.13\/cropper.min.js\"><\/script>\n\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;700&#038;display=swap\" rel=\"stylesheet\">\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\n\n<style>\n:root {\n    --sig-blue: #2563EB;\n    --sig-dark: #1E3A8A;\n    --sig-light: #EFF6FF;\n}\n\n\/* Scope everything inside .bk-sign-tool *\/\n.bk-sign-tool * {\n    box-sizing: border-box;\n    font-family: 'Space Grotesk', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n}\n\n.bk-sign-tool {\n    background-color: #f3f4f6;\n    padding: 30px 0;\n}\n\n\/* Cropper Customization *\/\n.bk-sign-tool .cropper-view-box,\n.bk-sign-tool .cropper-face {\n    border-radius: 4px;\n}\n\n\/* Range Inputs Customization *\/\n.bk-sign-tool input[type=range] {\n    -webkit-appearance: none;\n    width: 100%;\n    background: transparent;\n}\n.bk-sign-tool input[type=range]::-webkit-slider-thumb {\n    -webkit-appearance: none;\n    height: 18px;\n    width: 18px;\n    border-radius: 50%;\n    background: var(--sig-blue);\n    cursor: pointer;\n    margin-top: -7px;\n    box-shadow: 0 0 3px rgba(0,0,0,0.2);\n}\n.bk-sign-tool input[type=range]::-webkit-slider-runnable-track {\n    width: 100%;\n    height: 4px;\n    cursor: pointer;\n    background: #cbd5e1;\n    border-radius: 2px;\n}\n\n\/* Presets & Buttons *\/\n.bk-sign-tool .preset-btn {\n    transition: all 0.2s;\n}\n.bk-sign-tool .preset-btn:active {\n    transform: scale(0.95);\n}\n\n\/* Loader *\/\n.bk-sign-tool .loader-overlay {\n    position: fixed;\n    inset: 0;\n    background-color: #0B0E14;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n    z-index: 9999;\n    opacity: 1;\n    transition: opacity 0.3s ease;\n}\n.bk-sign-tool .loader-overlay.hidden {\n    opacity: 0;\n    pointer-events: none;\n}\n.bk-sign-tool .spinner-container {\n    width: 16rem;\n    height: 16rem;\n    position: relative;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n}\n.bk-sign-tool .spinner-ring-outer {\n    position: absolute;\n    inset: 0;\n    border-top: 4px solid #00F0FF;\n    border-radius: 9999px;\n    animation: sig-spin 1s linear infinite;\n}\n.bk-sign-tool .spinner-ring-inner {\n    position: absolute;\n    inset: 0.5rem;\n    border-bottom: 4px solid #BD00FF;\n    border-radius: 9999px;\n    animation: sig-spin 1s linear infinite reverse;\n}\n.bk-sign-tool .spinner-text {\n    position: absolute;\n    inset: 0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: #00F0FF;\n    font-size: 0.875rem;\n    animation: sig-pulse 1.5s ease-in-out infinite;\n    font-weight: bold;\n    letter-spacing: 2px;\n}\n.bk-sign-tool .console-text {\n    margin-top: 2rem;\n    color: #10B981;\n    font-size: 0.875rem;\n    height: 1.5rem;\n}\n.bk-sign-tool .loader-bar-bg {\n    width: 16rem;\n    height: 0.25rem;\n    background-color: #1F2937;\n    border-radius: 9999px;\n    margin-top: 1rem;\n    overflow: hidden;\n}\n.bk-sign-tool .loader-bar-fill {\n    height: 100%;\n    background-color: #10B981;\n    width: 0;\n    transition: width 0.3s linear;\n}\n@keyframes sig-spin { 0%{transform:rotate(0deg);}100%{transform:rotate(360deg);} }\n@keyframes sig-pulse { 0%,100%{opacity:1;}50%{opacity:0.5;} }\n<\/style>\n\n<div class=\"bk-sign-tool\">\n    <!-- FULLSCREEN LOADER -->\n    <div id=\"fullscreenLoader\" class=\"loader-overlay hidden\">\n        <div class=\"spinner-container\">\n            <div class=\"spinner-ring-outer\"><\/div>\n            <div class=\"spinner-ring-inner\"><\/div>\n            <div class=\"spinner-text\">PROCESSING<\/div>\n        <\/div>\n        <div id=\"consoleText\" class=\"console-text\">&gt; System Ready&#8230;<\/div>\n        <div class=\"loader-bar-bg\">\n            <div id=\"loaderBar\" class=\"loader-bar-fill\"><\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"w-full max-w-5xl bg-white rounded-2xl shadow-xl overflow-hidden mx-auto\">\n        <div class=\"bg-blue-600 p-6 text-white text-center\">\n            <h1 class=\"text-3xl font-bold mb-2\">Signature Resizer Tool<\/h1>\n            <p class=\"text-blue-100 text-sm\">Crop, Resize, Rotate &#038; Compress signatures for Government Forms<\/p>\n        <\/div>\n\n        <div class=\"p-6 md:p-8 grid grid-cols-1 md:grid-cols-2 gap-8\">\n            <!-- LEFT: UPLOAD & CROP & EDIT -->\n            <div class=\"space-y-6\">\n                <!-- Upload Box -->\n                <div class=\"bg-blue-50 border-2 border-dashed border-blue-200 rounded-xl p-6 text-center hover:bg-blue-100 transition cursor-pointer relative group\" id=\"dropZone\">\n                    <input type=\"file\" id=\"fileInput\" class=\"absolute inset-0 w-full h-full opacity-0 cursor-pointer\" accept=\"image\/*\">\n                    <i class=\"fas fa-file-signature text-4xl text-blue-400 mb-2 group-hover:scale-110 transition-transform\"><\/i>\n                    <p class=\"text-blue-800 font-medium\">Click to Upload Signature<\/p>\n                    <p class=\"text-xs text-blue-500 mt-1\">JPG, PNG supported<\/p>\n                <\/div>\n\n                <!-- Cropper Area -->\n                <div class=\"h-64 bg-gray-900 rounded-xl overflow-hidden flex items-center justify-center relative border border-gray-300\">\n                    <img decoding=\"async\" id=\"cropperImage\" class=\"max-w-full max-h-full opacity-0\" src=\"\" alt=\"\">\n                    <div id=\"placeholderText\" class=\"absolute text-gray-400 text-sm\">Preview Area<\/div>\n                <\/div>\n\n                <!-- Edit Tools (Rotate\/Zoom) -->\n                <div id=\"editTools\" class=\"opacity-50 pointer-events-none transition-opacity bg-white p-4 rounded-lg border border-gray-200 shadow-sm\">\n                    <div class=\"flex items-center space-x-4\">\n                        <div class=\"w-1\/2\">\n                            <label class=\"text-xs font-bold text-gray-500 uppercase flex justify-between mb-1\">\n                                <span><i class=\"fas fa-sync-alt mr-1\"><\/i> Rotate<\/span>\n                                <span id=\"rotateVal\" class=\"text-blue-600\">0\u00b0<\/span>\n                            <\/label>\n                            <input type=\"range\" id=\"rotateSlider\" min=\"-45\" max=\"45\" value=\"0\" step=\"1\">\n                        <\/div>\n                        <div class=\"w-1\/2\">\n                            <label class=\"text-xs font-bold text-gray-500 uppercase flex justify-between mb-1\">\n                                <span><i class=\"fas fa-search-plus mr-1\"><\/i> Zoom<\/span>\n                                <span id=\"zoomVal\" class=\"text-blue-600\">1.0x<\/span>\n                            <\/label>\n                            <input type=\"range\" id=\"zoomSlider\" min=\"0.5\" max=\"3.0\" value=\"1.0\" step=\"0.1\">\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- RIGHT: SETTINGS & ACTION -->\n            <div class=\"space-y-6\">\n                <div class=\"bg-gray-50 p-6 rounded-xl border border-gray-200 shadow-inner\">\n                    <h3 class=\"font-bold text-gray-800 mb-4 flex items-center gap-2 pb-2 border-b\">\n                        <i class=\"fas fa-sliders-h text-blue-600\"><\/i> Output Settings\n                    <\/h3>\n                    \n                    <!-- Presets -->\n                    <div class=\"mb-5\">\n                        <label class=\"text-xs font-bold text-gray-400 uppercase mb-2 block\">Quick Presets<\/label>\n                        <div class=\"flex flex-wrap gap-2 text-xs\">\n                            <button onclick=\"applyPreset(400, 200, 20)\" class=\"preset-btn px-3 py-2 bg-white border border-blue-200 text-blue-700 rounded shadow-sm hover:bg-blue-50 font-medium\">PAN Card<\/button>\n                            <button onclick=\"applyPreset(140, 60, 10)\" class=\"preset-btn px-3 py-2 bg-white border border-blue-200 text-blue-700 rounded shadow-sm hover:bg-blue-50 font-medium\">SSC Exam<\/button>\n                            <button onclick=\"applyPreset(256, 64, 20)\" class=\"preset-btn px-3 py-2 bg-white border border-blue-200 text-blue-700 rounded shadow-sm hover:bg-blue-50 font-medium\">UPSC<\/button>\n                        <\/div>\n                    <\/div>\n\n                    <!-- Unit & Aspect Ratio -->\n                    <div class=\"flex justify-between items-center mb-3\">\n                        <label class=\"flex items-center cursor-pointer select-none text-sm font-medium text-gray-700\">\n                            <input type=\"checkbox\" id=\"aspectRatioCheck\" class=\"form-checkbox h-4 w-4 text-blue-600 rounded mr-2\">\n                            Maintain Aspect Ratio\n                        <\/label>\n                        <select id=\"unitSelect\" class=\"bg-white border border-gray-300 text-gray-700 py-1 px-2 rounded text-sm focus:outline-none focus:ring-2 focus:ring-blue-500\">\n                            <option value=\"px\">Pixels (px)<\/option>\n                            <option value=\"cm\">cm<\/option>\n                            <option value=\"inch\">inch<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <!-- Dimensions -->\n                    <div class=\"grid grid-cols-2 gap-4 mb-4\">\n                        <div>\n                            <label class=\"text-xs font-bold text-gray-500 block mb-1\">Width<\/label>\n                            <input type=\"number\" id=\"widthInput\" class=\"w-full p-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-mono\">\n                        <\/div>\n                        <div>\n                            <label class=\"text-xs font-bold text-gray-500 block mb-1\">Height<\/label>\n                            <input type=\"number\" id=\"heightInput\" class=\"w-full p-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-mono\">\n                        <\/div>\n                    <\/div>\n\n                    <!-- Format & Size -->\n                    <div class=\"mb-4 grid grid-cols-2 gap-4\">\n                        <div>\n                             <label class=\"text-xs font-bold text-gray-500 block mb-1\">Format<\/label>\n                             <select id=\"formatSelect\" class=\"w-full p-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none text-sm bg-white\">\n                                 <option value=\"image\/jpeg\">JPEG (Standard)<\/option>\n                                 <option value=\"image\/png\">PNG (Transparent)<\/option>\n                                 <option value=\"image\/webp\">WEBP (Web)<\/option>\n                             <\/select>\n                        <\/div>\n                        <div>\n                            <label class=\"text-xs font-bold text-gray-500 block mb-1\">Max Size (KB)<\/label>\n                            <input type=\"number\" id=\"sizeInput\" value=\"20\" class=\"w-full p-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-mono\">\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <button id=\"processBtn\" disabled class=\"w-full py-4 bg-blue-600 text-white rounded-xl font-bold shadow-lg hover:bg-blue-700 transition disabled:bg-blue-300 disabled:cursor-not-allowed transform active:scale-95 flex justify-center items-center\">\n                    <i class=\"fas fa-magic mr-2\"><\/i> Generate Signature\n                <\/button>\n\n                <!-- Result -->\n                <div id=\"resultSection\" class=\"hidden text-center bg-green-50 rounded-xl p-4 border border-green-200\">\n                    <p class=\"text-xs font-bold text-green-700 uppercase mb-2\">Success! Signature Ready<\/p>\n                    <div class=\"border-2 border-white shadow-md p-2 rounded-lg inline-block bg-white mb-3 max-w-full\">\n                        <img id=\"finalImage\" class=\"max-h-24 object-contain\">\n                    <\/div>\n                    <div class=\"flex justify-center gap-4 text-sm mb-3\">\n                        <span class=\"bg-white px-2 py-1 rounded border\">Size: <strong id=\"finalSize\" class=\"text-green-600\"><\/strong><\/span>\n                        <span class=\"bg-white px-2 py-1 rounded border\">Format: <strong id=\"finalFormat\"><\/strong><\/span>\n                    <\/div>\n                    <a id=\"downloadLink\" class=\"inline-block w-full sm:w-auto bg-green-600 hover:bg-green-700 text-white font-bold py-2 px-6 rounded-lg transition shadow-sm cursor-pointer\">\n                        <i class=\"fas fa-download mr-1\"><\/i> Download\n                    <\/a>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <canvas id=\"canvas\" class=\"hidden\"><\/canvas>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n    \/\/ Elements\n    const fileInput = document.getElementById('fileInput');\n    const cropperImage = document.getElementById('cropperImage');\n    const processBtn = document.getElementById('processBtn');\n    const editTools = document.getElementById('editTools');\n    \n    \/\/ Inputs\n    const widthInput = document.getElementById('widthInput');\n    const heightInput = document.getElementById('heightInput');\n    const sizeInput = document.getElementById('sizeInput');\n    const unitSelect = document.getElementById('unitSelect');\n    const formatSelect = document.getElementById('formatSelect');\n    const aspectRatioCheck = document.getElementById('aspectRatioCheck');\n    \n    \/\/ Sliders\n    const rotateSlider = document.getElementById('rotateSlider');\n    const rotateVal = document.getElementById('rotateVal');\n    const zoomSlider = document.getElementById('zoomSlider');\n    const zoomVal = document.getElementById('zoomVal');\n\n    \/\/ Result\n    const resultSection = document.getElementById('resultSection');\n    const finalImage = document.getElementById('finalImage');\n    const finalSize = document.getElementById('finalSize');\n    const finalFormat = document.getElementById('finalFormat');\n    const downloadLink = document.getElementById('downloadLink');\n\n    \/\/ Loader\n    const loader = document.getElementById('fullscreenLoader');\n    const consoleTxt = document.getElementById('consoleText');\n    const loaderBar = document.getElementById('loaderBar');\n\n    let cropper = null;\n    const DPI = 96;\n\n    \/\/ --- Helpers: Unit Conversion ---\n    const converters = {\n        px: { toPx: v => v, fromPx: v => v },\n        cm: { toPx: v => v * 37.795, fromPx: v => v \/ 37.795 },\n        inch: { toPx: v => v * DPI, fromPx: v => v \/ DPI }\n    };\n\n    function getCurrentUnit() { return unitSelect.value; }\n\n    \/\/ --- Global Preset Function ---\n    window.applyPreset = function(w, h, kb) {\n        \/\/ Reset unit to PX for presets\n        unitSelect.value = 'px';\n        widthInput.value = w;\n        heightInput.value = h;\n        sizeInput.value = kb;\n        aspectRatioCheck.checked = false; \/\/ Presets usually enforce specific dims\n        \n        if (cropper) {\n            cropper.setData({ width: w, height: h });\n        }\n        \n        \/\/ Visual feedback\n        const btn = event.target;\n        const originalText = btn.innerText;\n        btn.innerText = \"Applied!\";\n        setTimeout(() => btn.innerText = originalText, 1000);\n    };\n\n    function updateInputsFromCropper() {\n        if (!cropper) return;\n        const data = cropper.getData();\n        const unit = getCurrentUnit();\n        const w = converters[unit].fromPx(data.width);\n        const h = converters[unit].fromPx(data.height);\n        \n        \/\/ Avoid recursive updates if focused\n        if (document.activeElement !== widthInput) widthInput.value = w.toFixed(unit === 'px' ? 0 : 2);\n        if (document.activeElement !== heightInput) heightInput.value = h.toFixed(unit === 'px' ? 0 : 2);\n    }\n\n    \/\/ --- 1. Upload ---\n    fileInput.addEventListener('change', (e) => {\n        if(e.target.files && e.target.files[0]) {\n            const reader = new FileReader();\n            reader.onload = (evt) => {\n                cropperImage.src = evt.target.result;\n                cropperImage.classList.remove('opacity-0');\n                document.getElementById('placeholderText').style.display = 'none';\n                \n                if(cropper) cropper.destroy();\n                \n                cropper = new Cropper(cropperImage, {\n                    viewMode: 1,\n                    autoCropArea: 0.8,\n                    zoomable: true,\n                    rotatable: true,\n                    ready() {\n                        editTools.classList.remove('opacity-50', 'pointer-events-none');\n                        processBtn.disabled = false;\n                        updateInputsFromCropper();\n                        rotateSlider.value = 0;\n                        zoomSlider.value = 1;\n                    },\n                    crop(e) {\n                         if (document.activeElement !== widthInput && document.activeElement !== heightInput) {\n                            updateInputsFromCropper();\n                        }\n                    }\n                });\n            };\n            reader.readAsDataURL(e.target.files[0]);\n        }\n    });\n\n    \/\/ --- 2. Sliders ---\n    rotateSlider.addEventListener('input', (e) => {\n        if(!cropper) return;\n        const val = parseInt(e.target.value);\n        cropper.rotateTo(val);\n        rotateVal.innerText = val + \"\u00b0\";\n    });\n\n    zoomSlider.addEventListener('input', (e) => {\n        if(!cropper) return;\n        const val = parseFloat(e.target.value);\n        cropper.zoomTo(val);\n        zoomVal.innerText = val + \"x\";\n    });\n\n    \/\/ --- 3. Inputs & Unit Logic ---\n    function handleDimChange(source) {\n        if(!cropper) return;\n        const unit = getCurrentUnit();\n        let w = parseFloat(widthInput.value) || 0;\n        let h = parseFloat(heightInput.value) || 0;\n        \n        const wPx = converters[unit].toPx(w);\n        const hPx = converters[unit].toPx(h);\n        \n        const data = cropper.getData();\n        \n        if (aspectRatioCheck.checked) {\n            const ratio = data.width \/ data.height;\n            if (source === 'width') {\n                const newHPx = wPx \/ ratio;\n                heightInput.value = converters[unit].fromPx(newHPx).toFixed(unit === 'px' ? 0 : 2);\n                cropper.setData({ width: wPx, height: newHPx });\n            } else {\n                const newWPx = hPx * ratio;\n                widthInput.value = converters[unit].fromPx(newWPx).toFixed(unit === 'px' ? 0 : 2);\n                cropper.setData({ width: newWPx, height: hPx });\n            }\n        } else {\n            cropper.setData({ \n                width: source === 'width' ? wPx : data.width, \n                height: source === 'height' ? hPx : data.height \n            });\n        }\n    }\n\n    widthInput.addEventListener('input', () => handleDimChange('width'));\n    heightInput.addEventListener('input', () => handleDimChange('height'));\n    \n    unitSelect.addEventListener('change', updateInputsFromCropper);\n\n    \/\/ --- 4. Process & Compress ---\n    processBtn.addEventListener('click', () => {\n        if(!cropper) return;\n\n        loader.classList.remove('hidden');\n        processBtn.disabled = true;\n\n        const logs = [\n            \"Scanning Signature...\",\n            \"Applying Rotation & Crop...\",\n            \"Resizing Dimensions...\",\n            \"Optimizing File Size...\",\n            \"Formatting Output...\"\n        ];\n        \n        let i = 0;\n        loaderBar.style.width = \"0%\";\n        consoleTxt.innerText = \"> Initializing...\";\n\n        const animInterval = setInterval(() => {\n            if(i < logs.length) {\n                consoleTxt.innerText = \"> \" + logs[i];\n                loaderBar.style.width = ((i+1)*20) + \"%\";\n                i++;\n            } else {\n                clearInterval(animInterval);\n            }\n        }, 600);\n\n        setTimeout(async () => {\n            clearInterval(animInterval);\n            loaderBar.style.width = \"100%\";\n\n            const unit = getCurrentUnit();\n            const finalW = converters[unit].toPx(parseFloat(widthInput.value));\n            const finalH = converters[unit].toPx(parseFloat(heightInput.value));\n            const maxKB = parseFloat(sizeInput.value);\n            const format = formatSelect.value;\n\n            \/\/ 1. Get Canvas\n            const canvas = cropper.getCroppedCanvas({\n                width: finalW,\n                height: finalH,\n                fillColor: format === 'image\/jpeg' ? '#fff' : 'transparent',\n                imageSmoothingQuality: 'high'\n            });\n\n            \/\/ 2. Compress Logic\n            const targetBytes = maxKB * 1024;\n            let quality = 0.9;\n            let blob = await getBlob(canvas, format, quality);\n            \n            \/\/ Only loop compress for JPG\/WEBP\n            if (format !== 'image\/png') {\n                let attempts = 0;\n                while (blob.size > targetBytes && quality > 0.1 && attempts < 10) {\n                    \/\/ Estimate reduction\n                    const ratio = Math.sqrt(blob.size \/ targetBytes);\n                    quality \/= ratio;\n                    if(quality < 0.1) quality = 0.1;\n                    \n                    blob = await getBlob(canvas, format, quality);\n                    attempts++;\n                }\n            }\n\n            \/\/ 3. Display Result\n            const url = URL.createObjectURL(blob);\n            finalImage.src = url;\n            downloadLink.href = url;\n            \n            let ext = 'jpg';\n            if (format === 'image\/png') ext = 'png';\n            if (format === 'image\/webp') ext = 'webp';\n            downloadLink.download = `Signature_${Date.now()}.${ext}`;\n            \n            finalSize.innerText = (blob.size \/ 1024).toFixed(2) + \" KB\";\n            finalFormat.innerText = ext.toUpperCase();\n\n            loader.classList.add('hidden');\n            resultSection.classList.remove('hidden');\n            processBtn.disabled = false;\n            \n            \/\/ Scroll to result\n            resultSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\n        }, 3500);\n    });\n\n    function getBlob(canvas, type, quality) {\n        return new Promise(resolve => canvas.toBlob(resolve, type, quality));\n    }\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>PROCESSING &gt; System Ready&#8230; Signature Resizer Tool Crop, Resize, Rotate &#038; Compress signatures for Government Forms Click to &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"Signature Resizer Tool\" class=\"read-more button\" href=\"https:\/\/bkupdate.in\/?page_id=3908#more-3908\" aria-label=\"Read more about Signature Resizer Tool\">Read more<\/a><\/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-3908","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/bkupdate.in\/index.php?rest_route=\/wp\/v2\/pages\/3908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bkupdate.in\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bkupdate.in\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bkupdate.in\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bkupdate.in\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3908"}],"version-history":[{"count":2,"href":"https:\/\/bkupdate.in\/index.php?rest_route=\/wp\/v2\/pages\/3908\/revisions"}],"predecessor-version":[{"id":3951,"href":"https:\/\/bkupdate.in\/index.php?rest_route=\/wp\/v2\/pages\/3908\/revisions\/3951"}],"wp:attachment":[{"href":"https:\/\/bkupdate.in\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}