{"id":2452,"date":"2025-06-26T22:48:13","date_gmt":"2025-06-26T20:48:13","guid":{"rendered":"https:\/\/eltecnologuia.com\/?page_id=2452"},"modified":"2025-07-23T19:28:38","modified_gmt":"2025-07-23T17:28:38","slug":"secure-id-editor","status":"publish","type":"page","link":"https:\/\/eltecnologuia.com\/en\/secure-id-editor\/","title":{"rendered":"DNI Editor"},"content":{"rendered":"\n<h2 class=\"wp-block-heading has-palette-color-4-color has-text-color has-link-color has-large-font-size wp-elements-d34cafd0b81584740e097fc2a717c372\" id=\"h-deja-de-enviarle-tu-dni-a-cualquiera\">\u00a1Deja de enviarle tu DNI a cualquiera!<\/h2>\n\n\n\n<p class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-50b91eef8276047a270084d4bcd7456c\">No tienes ni idea del riesgo que implica. En serio&#8230; Yo mismo estoy envuelto en un juicio desde 2019 por suplantaci\u00f3n de identidad. Hasta entonces jam\u00e1s me plante\u00e9 el peligro de enviar el DNI a desconocidos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-2f4613732085abed82d891646a669cc9\">Reservas en hoteles.<\/li>\n\n\n\n<li class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-91b1ae804010be3b26a9b7008bdbd59c\">Casas rurales<\/li>\n\n\n\n<li class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-e9f1b4b17f94b704296549c99974071f\">Apartamentos<\/li>\n\n\n\n<li class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-74755499e5e534c9f9ea3abbf2a50c1f\">Webs de Compra-Venta<\/li>\n<\/ul>\n\n\n\n<p class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-d12cf861a33454fbf844a67019244d39\">Pueden pedirte el DNI a trav\u00e9s de pasarelas autorizadas, pero muchos lo har\u00e1n a trav\u00e9s de email o incluso a trav\u00e9s de Whatsapp. \u00bfLa soluci\u00f3n? Sigue los pasos de las fuerzas de seguridad del estado como <a href=\"https:\/\/x.com\/policia\"><span style=\"color: var(--theme-palette-color-1, #ff6310);\" class=\"stk-highlight\">Polic\u00eda Nacional<\/span><\/a> o <a href=\"https:\/\/x.com\/guardiacivil\"><span style=\"color: var(--theme-palette-color-1, #ff6310);\" class=\"stk-highlight\">Guardia Civil<\/span><\/a> y ed\u00edtalo antes de mandarlo.<\/p>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-4646fe85 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-dea6c7f6\">\n<h3 class=\"wp-block-heading has-palette-color-4-color has-text-color has-link-color has-large-font-size wp-elements-e12a97426883f5474906ed05376fc0f1\" id=\"h-por-que-editar-tu-dni-antes-de-enviarlo\">\ud83d\udee1\ufe0f \u00bfPor qu\u00e9 editar tu DNI antes de enviarlo?<\/h3>\n\n\n\n<p class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-7767eeaabe6f46adbf2f0f6eeaa8e049\">Enviar una foto completa de tu DNI <strong>puede ponerte en peligro<\/strong>. Aunque muchos alojamientos lo piden, <strong>no necesitan todos tus datos<\/strong>. Las principales instituciones espa\u00f1olas lo advierten: <strong>oculta lo que no sea imprescindible<\/strong>.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-faf0114a\">\n<h3 class=\"wp-block-heading has-palette-color-4-color has-text-color has-link-color has-large-font-size wp-elements-151765dcbba7459bf5f8fc68add16971\" id=\"h-riesgos-reales-si-le-ha-pasado-a-miles-de-personas\">\u26a0\ufe0f Riesgos reales (s\u00ed, le ha pasado a miles de personas)<\/h3>\n\n\n\n<p class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-bea64bdce4b773a4696dcbf0dbb3dd91\">\ud83d\udd34 <strong>Tu firma puede ser copiada<\/strong> para falsificar contratos<br>\ud83d\udd34 <strong>Tu foto o direcci\u00f3n pueden usarse para suplantarte<\/strong><br>\ud83d\udd34 <strong>Pueden abrir cuentas o pedir cr\u00e9ditos a tu nombre<\/strong><br>\ud83d\udd34 <strong>No sabes qui\u00e9n ver\u00e1 tu documento ni por cu\u00e1nto tiempo<\/strong><\/p>\n<\/div>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading has-large-font-size\" id=\"h-que-debes-ocultar-de-tu-dni\">\u2705 \u00bfQu\u00e9 debes ocultar de tu DNI?<\/h3>\n\n\n\n<p><span style=\"color: var(--theme-palette-color-4, #111518);\" class=\"stk-highlight\">Estos son los campos que deber\u00edas editar antes de enviar tu DNI:<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud83d\udcf8 <span style=\"color: var(--theme-palette-color-4, #111518);\" class=\"stk-highlight\"><strong>Foto del rostro<\/strong> \u2192<\/span><span style=\"color: var(--theme-palette-color-1, #ff6310);\" class=\"stk-highlight\"> <a href=\"https:\/\/www.huffingtonpost.es\/virales\/la-guardia-civil-avisa-sueles-esto-dni-y-habitual-puedes-disgustobr.html\">Mejor en blanco y negro<\/a><\/span><\/li>\n\n\n\n<li>\u270d\ufe0f<span style=\"color: var(--theme-palette-color-4, #111518);\" class=\"stk-highlight\"> <strong>Firma manuscrita<\/strong><\/span> \u2192 <a href=\"https:\/\/www.infobae.com\/espana\/2024\/06\/15\/la-policia-revela-cual-es-la-mejor-forma-de-compartir-el-dni-a-traves-de-internet-sin-riesgo-de-fraude\/#:~:text=Por%20otro%20lado%2C%20tambi%C3%A9n%20se,identidad%20por%20parte%20de%20ciberdelincuentes\"><span style=\"color: var(--theme-palette-color-1, #ff6310);\" class=\"stk-highlight\">Puede ser usada para falsificaciones<\/span><\/a><\/li>\n\n\n\n<li>\ud83d\udd22 <span style=\"color: var(--theme-palette-color-4, #111518);\" class=\"stk-highlight\"><strong>N\u00famero de soporte del DNI<\/strong> \u2192<\/span> <a href=\"https:\/\/www.eldebate.com\/sociedad\/20250206\/guardia-civil-alerta-estafa-no-te-olvides-seguir-estos-pasos-cuando-compartas-dni-cns_267740.html#:~:text=,quieran%20utilizarlo%20con%20otros%20fines\"><span style=\"color: var(--theme-palette-color-1, #ff6310);\" class=\"stk-highlight\">No es necesario y puede usarse para suplantarte<\/span><\/a><\/li>\n\n\n\n<li>\ud83d\uddd3\ufe0f <span style=\"color: var(--theme-palette-color-4, #111518);\" class=\"stk-highlight\"><strong>Fechas de expedici\u00f3n y caducidad<\/strong> \u2192 <\/span><a href=\"https:\/\/maldita.es\/malditatecnologia\/20240709\/compartir-forma-segura-foto-dni-recop\/#:~:text=,un%20gran%20trabajo%20de%20edici%C3%B3n\"><span style=\"color: var(--theme-palette-color-1, #ff6310);\" class=\"stk-highlight\">No aportan nada \u00fatil para tu check-in<\/span><\/a><\/li>\n\n\n\n<li>\ud83c\udfe0 <span style=\"color: var(--theme-palette-color-4, #111518);\" class=\"stk-highlight\"><strong>Direcci\u00f3n y datos familiares<\/strong> \u2192<\/span> <a href=\"https:\/\/maldita.es\/malditatecnologia\/20240709\/compartir-forma-segura-foto-dni-recop\/#:~:text=,un%20gran%20trabajo%20de%20edici%C3%B3n\"><span style=\"color: var(--theme-palette-color-1, #ff6310);\" class=\"stk-highlight\">Pueden usarse en estafas como el timo del familiar en apuros<\/span><\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\" id=\"h-empieza-a-editar-tu-dni-ahora-gratis\">Empieza a editar tu DNI ahora GRATIS<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Editor de DNI Seguro (Anverso y Reverso)<\/title>\n    <script src=\"https:\/\/cdn.tailwindcss.com?plugins=typography\"><\/script>\n    <script src=\"https:\/\/unpkg.com\/@phosphor-icons\/web\"><\/script>\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n    <style>\n        body {\n            font-family: 'Inter', sans-serif;\n            background-color: #0f172a; \/* bg-slate-300 *\/\n            color: #cbd5e1; \/* text-slate-700 *\/\n        }\n        .tool-btn.active {\n            background-color: #2563eb; \/* bg-blue-300 *\/\n            color: white;\n            box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.4);\n        }\n        .tool-btn.active i, .tool-btn.active span {\n            color: white;\n        }\n        .tab-btn.active {\n             border-color: #3b82f6; \/* border-blue-500 *\/\n             color: #3b82f6; \/* text-blue-500 *\/\n        }\n        canvas {\n            display: block;\n            width: 100%;\n            max-width: 800px;\n            margin-left: auto;\n            margin-right: auto;\n            height: auto;\n            background-color: #334155; \/* bg-slate-700 *\/\n            border-radius: 0.75rem;\n        }\n        .btn {\n            transition: all 0.2s ease-in-out;\n        }\n        .btn:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 4px 8px rgba(0,0,0,0.2);\n        }\n        .btn:active {\n            transform: translateY(-1px);\n        }\n        .canvas-wrapper.dragover {\n            outline: 2px dashed #3b82f6;\n            outline-offset: -10px;\n            background-color: #1e293b;\n        }\n    <\/style>\n<\/head>\n<body class=\"text-slate-500\">\n\n    <div class=\"min-h-screen container mx-auto p-4 sm:p-6 lg:p-8 flex flex-col\">\n        <!-- Header -->\n        <header class=\"flex flex-col sm:flex-row justify-between items-center mb-6 pb-6 border-b border-slate-700\">\n            <div class=\"flex items-center gap-3\">\n                <i class=\"ph-fill ph-shield-check text-4xl text-blue-500\"><\/i>\n                <div>\n                    <h1 class=\"text-3xl font-bold text-slate-500\" data-i18n-key=\"title\">Editor de DNI Seguro<\/h1>\n                    <p class=\"text-slate-400\" data-i18n-key=\"subtitle\">Edita y protege tu ID de forma local y privada<\/p>\n                <\/div>\n            <\/div>\n            <div class=\"flex items-center gap-2 mt-4 sm:mt-0\">\n                <button id=\"lang-es\" class=\"px-3 py-1 text-sm font-semibold rounded-md transition-colors bg-slate-700 text-slate-200 ring-1 ring-inset ring-slate-600\">ES<\/button>\n                <button id=\"lang-en\" class=\"px-3 py-1 text-sm font-semibold rounded-md transition-colors bg-slate-800 text-slate-400\">EN<\/button>\n            <\/div>\n        <\/header>\n        \n        <!-- Main Content -->\n        <main class=\"flex flex-col gap-8 flex-grow\">\n            <!-- Canvas & Upload Area -->\n            <div class=\"flex-grow flex flex-col\">\n                <!-- Tabs -->\n                <div class=\"mb-4 border-b border-slate-700\">\n                    <nav class=\"-mb-px flex space-x-8\" aria-label=\"Tabs\">\n                        <button id=\"tab-front\" class=\"tab-btn active\" data-i18n-key=\"tab_front\">Anverso<\/button>\n                        <button id=\"tab-back\" class=\"tab-btn\" data-i18n-key=\"tab_back\">Reverso<\/button>\n                    <\/nav>\n                <\/div>\n                <!-- Canvas Wrappers -->\n                <div id=\"front-wrapper\" class=\"canvas-wrapper flex-grow flex items-center justify-center bg-slate-800\/50 rounded-xl transition-all duration-200\">\n                    <canvas id=\"canvas-front\" class=\"hidden\"><\/canvas>\n                    <div id=\"placeholder-front\" class=\"placeholder w-full max-w-3xl h-full flex flex-col items-center justify-center text-center text-slate-500 p-4 sm:p-8\">\n                        <i class=\"ph ph-identification-card text-8xl text-slate-600\"><\/i>\n                        <p class=\"text-xl mt-4 font-semibold text-slate-800\" data-i18n-key=\"upload_front_placeholder\">Subir Anverso<\/p>\n                        <p class=\"text-slate-800 mb-4\" data-i18n-key=\"upload_tip\">Toca el bot\u00f3n o arrastra un archivo<\/p>\n                        <label for=\"image-loader-front\" class=\"btn mt-4 inline-block cursor-pointer bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-lg text-center shadow-md\" data-i18n-key=\"select_button\">Seleccionar Archivo<\/label>\n                        <input type=\"file\" class=\"hidden\" id=\"image-loader-front\" accept=\"image\/*\">\n                    <\/div>\n                <\/div>\n                <div id=\"back-wrapper\" class=\"canvas-wrapper hidden flex-grow items-center justify-center bg-slate-800\/50 rounded-xl transition-all duration-200\">\n                    <canvas id=\"canvas-back\" class=\"hidden\"><\/canvas>\n                     <div id=\"placeholder-back\" class=\"placeholder w-full max-w-3xl h-full flex flex-col items-center justify-center text-center text-slate-800 p-4 sm:p-8\">\n                        <i class=\"ph ph-identification-badge text-8xl text-slate-800\"><\/i>\n                        <p class=\"text-xl mt-4 font-semibold text-slate-800\" data-i18n-key=\"upload_back_placeholder\">Subir Reverso<\/p>\n                        <p class=\"text-slate-800 mb-4\" data-i18n-key=\"upload_tip\">Toca el bot\u00f3n o arrastra un archivo<\/p>\n                        <label for=\"image-loader-back\" class=\"btn mt-4 inline-block cursor-pointer bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-lg text-center shadow-md\" data-i18n-key=\"select_button\">Seleccionar Archivo<\/label>\n                        <input type=\"file\" class=\"hidden\" id=\"image-loader-back\" accept=\"image\/*\">\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Controls Panel -->\n            <aside id=\"controls-panel\" class=\"w-full max-w-3xl mx-auto bg-slate-800\/50 p-6 rounded-xl shadow-lg flex-col gap-8 hidden\">\n                <!-- Step 2: Edit -->\n                <div id=\"edit-tools\">\n                    <h2 class=\"text-xl font-semibold mb-4 flex items-center gap-2 text-slate-200\" data-i18n-key=\"edit_title\"><i class=\"ph ph-paint-brush text-blue-400\"><\/i> Editar y Censurar<\/h2>\n                    <div class=\"space-y-4\">\n                        <button id=\"grayscale-btn\" class=\"btn w-full flex items-center justify-center gap-2 p-3 rounded-lg bg-slate-700 hover:bg-slate-600 transition-colors text-slate-200 font-medium\" data-i18n-key=\"tool_grayscale\"><i class=\"ph ph-paint-bucket\"><\/i> Blanco y Negro<\/button>\n                        <div class=\"grid grid-cols-3 gap-3\">\n                            <button id=\"tool-crop\" class=\"tool-btn btn flex flex-col items-center justify-center gap-1 p-2 rounded-lg bg-slate-700 hover:bg-slate-600 transition-colors text-slate-300 font-medium text-xs sm:text-sm\" data-i18n-key=\"tool_crop\"><i class=\"ph ph-crop text-xl text-slate-400\"><\/i><span>Recortar<\/span><\/button>\n                            <button id=\"tool-pixelate\" class=\"tool-btn btn flex flex-col items-center justify-center gap-1 p-2 rounded-lg bg-slate-700 hover:bg-slate-600 transition-colors text-slate-300 font-medium text-xs sm:text-sm\" data-i18n-key=\"tool_pixelate\"><i class=\"ph ph-squares-four text-xl text-slate-400\"><\/i><span>Pixelar<\/span><\/button>\n                            <button id=\"tool-blackout\" class=\"tool-btn btn flex flex-col items-center justify-center gap-1 p-2 rounded-lg bg-slate-700 hover:bg-slate-600 transition-colors text-slate-300 font-medium text-xs sm:text-sm\" data-i18n-key=\"tool_blackout\"><i class=\"ph ph-rectangle text-xl text-slate-400\"><\/i><span>Tachar<\/span><\/button>\n                        <\/div>\n                        <div>\n                            <label for=\"watermark-text\" class=\"block text-sm font-medium text-slate-800 mb-1\" data-i18n-key=\"watermark_label\">A\u00f1adir marca de agua<\/label>\n                            <div class=\"mt-1 flex gap-2\">\n                                <input type=\"text\" id=\"watermark-text\" class=\"flex-grow shadow-sm focus:ring-blue-800 focus:border-blue-800 block w-full sm:text-sm border-slate-800 bg-slate-800 text-white rounded-md\" placeholder=\"Ej: Check-in Hotel\">\n                                <button id=\"apply-watermark\" class=\"btn px-4 py-2 bg-green-600 text-white rounded-md hover:bg-green-700 font-semibold\" data-i18n-key=\"apply_button\">Aplicar<\/button>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <!-- Step 3: Download -->\n                <div id=\"download-section\">\n                     <h2 class=\"text-xl font-semibold mb-4 flex items-center gap-2 text-slate-200\" data-i18n-key=\"download_title\"><i class=\"ph ph-download-simple text-blue-400\"><\/i> Guardar Cambios<\/h2>\n                    <div class=\"flex flex-col gap-3\">\n                        <button id=\"download-png\" class=\"btn bg-indigo-600 hover:bg-indigo-700 text-white font-bold py-3 px-4 rounded-lg shadow-md\" data-i18n-key=\"download_png\">Descargar PNG<\/button>\n                        <button id=\"download-jpg\" class=\"btn bg-indigo-600 hover:bg-indigo-700 text-white font-bold py-3 px-4 rounded-lg shadow-md\" data-i18n-key=\"download_jpg\">Descargar JPG<\/button>\n                        <button id=\"download-pdf\" class=\"btn bg-rose-600 hover:bg-rose-700 text-white font-bold py-3 px-4 rounded-lg shadow-md\" data-i18n-key=\"download_pdf\">Descargar PDF<\/button>\n                    <\/div>\n                <\/div>\n                <!-- Actions -->\n                <div class=\"mt-auto pt-6 border-t border-slate-700\">\n                    <button id=\"reset-btn\" class=\"w-full flex items-center justify-center gap-2 p-2 rounded-md text-red-400 bg-red-900\/40 hover:bg-red-900\/60 transition-colors disabled:opacity-50 disabled:cursor-not-allowed font-semibold\">\n                        <i class=\"ph ph-arrow-counter-clockwise\"><\/i><span data-i18n-key=\"reset_button\">Reiniciar Todo<\/span>\n                    <\/button>\n                <\/div>\n            <\/aside>\n        <\/main>\n    <\/div>\n\n    <script>\n        const translations = {\n            es: {\n                title: 'Editor de DNI Seguro', subtitle: 'Edita y protege tu ID de forma local y privada', edit_title: 'Editar y Censurar', tool_crop: 'Recortar', tool_pixelate: 'Pixelar', tool_blackout: 'Tachar', tool_grayscale: 'Blanco y Negro', watermark_label: 'A\u00f1adir marca de agua', apply_button: 'Aplicar', download_title: 'Guardar Cambios', download_png: 'Descargar PNG', download_jpg: 'Descargar JPG', download_pdf: 'Descargar PDF', reset_button: 'Reiniciar Todo', tab_front: 'Anverso', tab_back: 'Reverso', upload_front_placeholder: 'Subir Anverso', upload_back_placeholder: 'Subir Reverso', upload_tip: 'Toca el bot\u00f3n o arrastra un archivo', select_button: 'Seleccionar Archivo'\n            },\n            en: {\n                title: 'Secure ID Editor', subtitle: 'Edit and protect your ID locally and privately', edit_title: 'Edit & Censor', tool_crop: 'Crop', tool_pixelate: 'Pixelate', tool_blackout: 'Blackout', tool_grayscale: 'Black & White', watermark_label: 'Add watermark', apply_button: 'Apply', download_title: 'Save Changes', download_png: 'Download PNG', download_jpg: 'Download JPG', download_pdf: 'Download PDF', reset_button: 'Reset All', tab_front: 'Front Side', tab_back: 'Back Side', upload_front_placeholder: 'Upload Front Side', upload_back_placeholder: 'Upload Back Side', upload_tip: 'Tap the button or drag a file', select_button: 'Select File'\n            }\n        };\n\n        let currentLang = 'es';\n        let activeSide = 'front';\n        let isDrawing = false;\n        let startX, startY;\n        let currentTool = null;\n\n        const sides = {\n            front: { canvas: document.getElementById('canvas-front'), ctx: document.getElementById('canvas-front').getContext('2d'), wrapper: document.getElementById('front-wrapper'), placeholder: document.getElementById('placeholder-front'), loader: document.getElementById('image-loader-front'), initialImage: null, workingImage: null },\n            back: { canvas: document.getElementById('canvas-back'), ctx: document.getElementById('canvas-back').getContext('2d'), wrapper: document.getElementById('back-wrapper'), placeholder: document.getElementById('placeholder-back'), loader: document.getElementById('image-loader-back'), initialImage: null, workingImage: null }\n        };\n\n        const controlsPanel = document.getElementById('controls-panel');\n        const toolButtons = document.querySelectorAll('.tool-btn');\n        const langEsBtn = document.getElementById('lang-es');\n        const langEnBtn = document.getElementById('lang-en');\n\n        const setLanguage = (lang) => {\n            currentLang = lang;\n            document.querySelectorAll('[data-i18n-key]').forEach(el => {\n                const key = el.getAttribute('data-i18n-key');\n                if (translations[lang] && translations[lang][key]) {\n                    const i18nHTML = translations[lang][key];\n                    if (el.placeholder) {\n                        el.placeholder = i18nHTML;\n                    } else if (el.querySelector('span')) {\n                        el.querySelector('span').textContent = i18nHTML;\n                    } else {\n                        const icon = el.querySelector('i');\n                        if (icon && el.childNodes.length > 1) {\n                            el.childNodes[el.childNodes.length - 1].textContent = ' ' + i18nHTML;\n                        } else {\n                           el.innerHTML = i18nHTML;\n                        }\n                    }\n                }\n            });\n\n             if (lang === 'es') {\n                langEsBtn.className = 'px-3 py-1 text-sm font-semibold rounded-md transition-colors bg-slate-700 text-slate-200 ring-1 ring-inset ring-slate-600';\n                langEnBtn.className = 'px-3 py-1 text-sm font-semibold rounded-md transition-colors bg-slate-800 text-slate-400';\n            } else {\n                langEnBtn.className = 'px-3 py-1 text-sm font-semibold rounded-md transition-colors bg-slate-700 text-slate-200 ring-1 ring-inset ring-slate-600';\n                langEsBtn.className = 'px-3 py-1 text-sm font-semibold rounded-md transition-colors bg-slate-800 text-slate-400';\n            }\n        };\n\n        const handleImageUpload = (file, side) => {\n            const reader = new FileReader();\n            reader.onload = (e) => {\n                const sideData = sides[side];\n                sideData.initialImage = new Image();\n                sideData.workingImage = new Image();\n                \n                sideData.initialImage.onload = () => {\n                    sideData.workingImage.src = sideData.initialImage.src;\n                    sideData.workingImage.onload = () => {\n                        sideData.canvas.width = sideData.workingImage.width;\n                        sideData.canvas.height = sideData.workingImage.height;\n                        sideData.ctx.drawImage(sideData.workingImage, 0, 0);\n\n                        sideData.placeholder.style.display = 'none';\n                        sideData.canvas.style.display = 'block';\n                        sideData.wrapper.classList.remove('p-4', 'sm:p-8');\n                        \n                        controlsPanel.style.display = 'flex';\n                    };\n                };\n                sideData.initialImage.src = e.target.result;\n            };\n            reader.readAsDataURL(file);\n        };\n\n        const switchTab = (targetSide) => {\n            activeSide = targetSide;\n            document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active'));\n            document.getElementById(`tab-${targetSide}`).classList.add('active');\n\n            Object.keys(sides).forEach(side => {\n                const isTarget = side === targetSide;\n                sides[side].wrapper.classList.toggle('hidden', !isTarget);\n                sides[side].wrapper.classList.toggle('flex', isTarget);\n            });\n            \n            const hasAnyImage = sides.front.initialImage || sides.back.initialImage;\n            controlsPanel.style.display = hasAnyImage ? 'flex' : 'none';\n        };\n        \n        const resetAll = () => {\n            Object.values(sides).forEach(sideData => {\n                 if (!sideData.initialImage) return;\n                 sideData.workingImage.src = sideData.initialImage.src;\n                 sideData.workingImage.onload = () => {\n                     sideData.canvas.width = sideData.workingImage.width;\n                     sideData.canvas.height = sideData.workingImage.height;\n                     sideData.ctx.drawImage(sideData.workingImage, 0, 0);\n                 }\n            });\n        };\n        \n        const getEventPos = (e) => {\n            const canvas = sides[activeSide].canvas;\n            if (!canvas) return null;\n            const rect = canvas.getBoundingClientRect();\n            const scaleX = canvas.width \/ rect.width;\n            const scaleY = canvas.height \/ rect.height;\n            let clientX, clientY;\n\n            if (e.type.startsWith('touch')) {\n                const touch = e.touches[0] || e.changedTouches[0];\n                clientX = touch.clientX;\n                clientY = touch.clientY;\n            } else {\n                clientX = e.clientX;\n                clientY = e.clientY;\n            }\n            return { x: (clientX - rect.left) * scaleX, y: (clientY - rect.top) * scaleY };\n        };\n        \n        const startDrawing = (e) => {\n            e.preventDefault();\n            if (!currentTool || !sides[activeSide].workingImage) return;\n            isDrawing = true;\n            const pos = getEventPos(e);\n            startX = pos.x;\n            startY = pos.y;\n        };\n\n        const draw = (e) => {\n            e.preventDefault();\n            if (!isDrawing) return;\n            const sideData = sides[activeSide];\n            sideData.ctx.drawImage(sideData.workingImage, 0, 0);\n            const pos = getEventPos(e);\n            const rectX = Math.min(startX, pos.x);\n            const rectY = Math.min(startY, pos.y);\n            const rectWidth = Math.abs(startX - pos.x);\n            const rectHeight = Math.abs(startY - pos.y);\n            sideData.ctx.save();\n            sideData.ctx.strokeStyle = '#3b82f6';\n            sideData.ctx.lineWidth = 2 * (sideData.canvas.width \/ sideData.canvas.getBoundingClientRect().width);\n            sideData.ctx.setLineDash([6, 6]);\n            sideData.ctx.strokeRect(rectX, rectY, rectWidth, rectHeight);\n            sideData.ctx.restore();\n        };\n\n        const stopDrawing = (e) => {\n            e.preventDefault();\n            if (!isDrawing) return;\n            isDrawing = false;\n            const sideData = sides[activeSide];\n            sideData.ctx.drawImage(sideData.workingImage, 0, 0);\n            const pos = getEventPos(e);\n            if (!pos) return;\n            const rectX = Math.min(startX, pos.x);\n            const rectY = Math.min(startY, pos.y);\n            const rectWidth = Math.abs(startX - pos.x);\n            const rectHeight = Math.abs(startY - pos.y);\n            if (rectWidth < 5 || rectHeight < 5) return;\n            \n            if (currentTool === 'crop') {\n                applyCrop(rectX, rectY, rectWidth, rectHeight);\n                selectTool(null);\n            } else if (currentTool === 'pixelate' || currentTool === 'blackout') {\n                applyEffect(rectX, rectY, rectWidth, rectHeight);\n                sideData.workingImage.src = sideData.canvas.toDataURL();\n            }\n        };\n        \n        const applyCrop = (x, y, width, height) => {\n            const sideData = sides[activeSide];\n            if (width < 1 || height < 1) return;\n            const croppedImageData = sideData.ctx.getImageData(x, y, width, height);\n            sideData.canvas.width = width;\n            sideData.canvas.height = height;\n            sideData.ctx.putImageData(croppedImageData, 0, 0);\n            sideData.workingImage.src = sideData.canvas.toDataURL();\n        };\n\n        const applyEffect = (x, y, width, height) => {\n            const sideData = sides[activeSide];\n            if (width < 1 || height < 1) return;\n            if (currentTool === 'blackout') {\n                sideData.ctx.fillStyle = 'black';\n                sideData.ctx.fillRect(x, y, width, height);\n            } else if (currentTool === 'pixelate') {\n                const pixelSize = Math.max(8, sideData.canvas.width \/ 50);\n                for (let j = y; j < y + height; j += pixelSize) {\n                    for (let i = x; i < x + width; i += pixelSize) {\n                        const subRectX = Math.min(i, x + width - 1);\n                        const subRectY = Math.min(j, y + height - 1);\n                        const pixel = sideData.ctx.getImageData(subRectX, subRectY, 1, 1).data;\n                        sideData.ctx.fillStyle = `rgb(${pixel[0]},${pixel[1]},${pixel[2]})`;\n                        sideData.ctx.fillRect(i, j, pixelSize, pixelSize);\n                    }\n                }\n            }\n        };\n        \n        const selectTool = (tool) => {\n            currentTool = currentTool === tool ? null : tool;\n            toolButtons.forEach(btn => btn.classList.toggle('active', btn.id === `tool-${currentTool}`));\n            Object.values(sides).forEach(s => { if(s.canvas) s.canvas.style.cursor = currentTool ? 'crosshair' : 'default' });\n        };\n\n        function init() {\n            document.querySelectorAll('.tab-btn').forEach(btn => {\n                btn.className = 'tab-btn border-transparent text-slate-400 hover:text-slate-200 hover:border-slate-500 whitespace-nowrap py-3 px-1 border-b-2 font-medium text-base';\n            });\n            document.getElementById('tab-front').classList.add('active');\n\n            setLanguage('es');\n            langEsBtn.addEventListener('click', () => setLanguage('es'));\n            langEnBtn.addEventListener('click', () => setLanguage('en'));\n\n            document.getElementById('tab-front').addEventListener('click', () => switchTab('front'));\n            document.getElementById('tab-back').addEventListener('click', () => switchTab('back'));\n\n            Object.keys(sides).forEach(sideKey => {\n                const sideData = sides[sideKey];\n                if (!sideData.loader) return;\n\n                sideData.loader.addEventListener('change', (e) => e.target.files && e.target.files[0] && handleImageUpload(e.target.files[0], sideKey));\n                \n                ['dragover', 'dragleave', 'drop'].forEach(eventName => {\n                    sideData.wrapper.addEventListener(eventName, (e) => {\n                        e.preventDefault();\n                        e.stopPropagation();\n                        if (eventName === 'dragover') {\n                            sideData.wrapper.classList.add('dragover');\n                        }\n                        if (eventName === 'dragleave' || eventName === 'drop') {\n                            sideData.wrapper.classList.remove('dragover');\n                        }\n                        if (eventName === 'drop' && e.dataTransfer.files[0]) {\n                            handleImageUpload(e.dataTransfer.files[0], sideKey);\n                        }\n                    });\n                });\n                \n                const eventOptions = { passive: false };\n                sideData.canvas.addEventListener('mousedown', startDrawing, eventOptions);\n                sideData.canvas.addEventListener('touchstart', startDrawing, eventOptions);\n                sideData.canvas.addEventListener('mousemove', draw, eventOptions);\n                sideData.canvas.addEventListener('touchmove', draw, eventOptions);\n                sideData.canvas.addEventListener('mouseup', stopDrawing, eventOptions);\n                sideData.canvas.addEventListener('touchend', stopDrawing, eventOptions);\n                sideData.canvas.addEventListener('mouseleave', () => { if(isDrawing) { isDrawing = false; sideData.ctx.drawImage(sideData.workingImage, 0, 0); } });\n            });\n\n            document.getElementById('tool-crop').addEventListener('click', () => selectTool('crop'));\n            document.getElementById('tool-pixelate').addEventListener('click', () => selectTool('pixelate'));\n            document.getElementById('tool-blackout').addEventListener('click', () => selectTool('blackout'));\n\n            document.getElementById('reset-btn').addEventListener('click', resetAll);\n            \n            document.getElementById('grayscale-btn').addEventListener('click', () => {\n                const sideData = sides[activeSide];\n                if (!sideData.workingImage) return;\n                sideData.ctx.drawImage(sideData.workingImage, 0, 0);\n                const imageData = sideData.ctx.getImageData(0, 0, sideData.canvas.width, sideData.canvas.height);\n                const data = imageData.data;\n                for (let i = 0; i < data.length; i += 4) {\n                    const avg = (data[i] * 0.299) + (data[i + 1] * 0.587) + (data[i + 2] * 0.114);\n                    data[i] = data[i + 1] = data[i + 2] = avg;\n                }\n                sideData.ctx.putImageData(imageData, 0, 0);\n                sideData.workingImage.src = sideData.canvas.toDataURL();\n            });\n\n            document.getElementById('apply-watermark').addEventListener('click', () => {\n                const sideData = sides[activeSide];\n                if (!sideData.workingImage) return;\n                const text = document.getElementById('watermark-text').value;\n                if (!text) return;\n                sideData.ctx.drawImage(sideData.workingImage, 0, 0);\n                sideData.ctx.save();\n                const fontSize = sideData.canvas.width * 0.04;\n                sideData.ctx.font = `bold ${fontSize}px Arial`;\n                sideData.ctx.fillStyle = 'rgba(255, 255, 255, 0.2)';\n                sideData.ctx.textAlign = 'center';\n                sideData.ctx.textBaseline = 'middle';\n                const horizontalSpacing = sideData.ctx.measureText(text).width * 1.5;\n                const verticalSpacing = fontSize * 4;\n                const angle = -30 * Math.PI \/ 180;\n                sideData.ctx.rotate(angle);\n                for (let y = -sideData.canvas.height; y < sideData.canvas.height * 2; y += verticalSpacing) {\n                    for (let x = -sideData.canvas.width; x < sideData.canvas.width * 2; x += horizontalSpacing) {\n                        sideData.ctx.fillText(text, x, y);\n                    }\n                }\n                sideData.ctx.restore();\n                sideData.workingImage.src = sideData.canvas.toDataURL();\n            });\n            \n            const downloadImage = (format, quality) => {\n                const sideData = sides[activeSide];\n                if (!sideData.workingImage) return;\n                const link = document.createElement('a');\n                link.download = `dni-${activeSide}-editado-${Date.now()}.${format.split('\/')[1]}`;\n                link.href = sideData.canvas.toDataURL(format, quality);\n                link.click();\n            }\n\n            document.getElementById('download-png').addEventListener('click', () => downloadImage('image\/png'));\n            document.getElementById('download-jpg').addEventListener('click', () => downloadImage('image\/jpeg', 0.9));\n\n            document.getElementById('download-pdf').addEventListener('click', () => {\n                const { jsPDF } = window.jspdf;\n                const frontImg = sides.front.workingImage;\n                const backImg = sides.back.workingImage;\n\n                if (!frontImg && !backImg) return;\n\n                if(frontImg && !backImg) {\n                    const pdf = new jsPDF({ orientation: frontImg.width > frontImg.height ? 'l' : 'p', unit: 'px', format: [frontImg.width, frontImg.height] });\n                    pdf.addImage(frontImg.src, 'JPEG', 0, 0, frontImg.width, frontImg.height);\n                    pdf.save(`dni-anverso-editado-${Date.now()}.pdf`);\n                } else if (!frontImg && backImg) {\n                    const pdf = new jsPDF({ orientation: backImg.width > backImg.height ? 'l' : 'p', unit: 'px', format: [backImg.width, backImg.height] });\n                    pdf.addImage(backImg.src, 'JPEG', 0, 0, backImg.width, backImg.height);\n                    pdf.save(`dni-reverso-editado-${Date.now()}.pdf`);\n                } else {\n                    const pdf = new jsPDF({ orientation: frontImg.width > frontImg.height ? 'l' : 'p', unit: 'px', format: [frontImg.width, frontImg.height] });\n                    pdf.addImage(frontImg.src, 'JPEG', 0, 0, frontImg.width, frontImg.height);\n                    pdf.addPage([backImg.width, backImg.height], backImg.width > backImg.height ? 'l' : 'p');\n                    pdf.addImage(backImg.src, 'JPEG', 0, 0, backImg.width, backImg.height);\n                    pdf.save(`dni-completo-editado-${Date.now()}.pdf`);\n                }\n            });\n        }\n\n        init();\n    <\/script>\n<\/body>\n<\/html>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-b32bb2f7fc7e7de2d1e31fbcd2853662\">Adem\u00e1s, <strong>a\u00f1ade una marca de agua<\/strong> que indique para qu\u00e9 lo est\u00e1s enviando, por ejemplo:<br><em>\u201cSolo v\u00e1lido para el check-in de Apartamento Sol, 12\/08\/2025\u201d<\/em><br>\u27a1\ufe0f Esto desanima cualquier uso fraudulento.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-01a246c4 alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-5cee6e8b\">\n<h3 class=\"wp-block-heading has-large-font-size\" id=\"h-quien-lo-recomienda\">\ud83e\udde0 \u00bfQui\u00e9n lo recomienda?<\/h3>\n\n\n\n<p><span style=\"color: var(--theme-palette-color-4, #111518);\" class=\"stk-highlight\">Estas instituciones lo tienen claro:<\/span><\/p>\n\n\n\n<p class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-84116641ac1de02a61df71f3f63a6346\"><a href=\"https:\/\/www.incibe.es\/ciudadania\/blog\/precauciones-tener-en-cuenta-si-vas-enviar-tu-dni-por-internet#:~:text=,vulnerabilidades%20en%20redes%20o%20servidores\"><span style=\"color: var(--theme-palette-color-1, #ff6310);\" class=\"stk-highlight\">INCIBE<\/span><\/a>: solo comparte lo necesario y usa canales seguros.<br><a href=\"https:\/\/www.rtve.es\/noticias\/20240604\/pixelar-datos-recomendaciones-expertos-compartir-dni-internet\/16132816.shtml#:~:text=Por%20otro%20lado%2C%20otra%20de,de%20sus%20dispositivos%20o%20sistemas\"><span style=\"color: var(--theme-palette-color-1, #ff6310);\" class=\"stk-highlight\">Guardia Civil<\/span><\/a>: env\u00eda el DNI en blanco y negro, con datos pixelados.<br><a href=\"https:\/\/maldita.es\/malditatecnologia\/20210903\/alquilar-apartamento-legal-DNI\/#:~:text=cualquier%20otro%20alojamiento%20de%20hospedaje,es%20Samuel%20Parra\"><span style=\"color: var(--theme-palette-color-1, #ff6310);\" class=\"stk-highlight\">Polic\u00eda Nacional<\/span><\/a>: nunca env\u00edes el DNI completo sin marcas ni protecci\u00f3n.<br><a href=\"https:\/\/www.infobae.com\/espana\/2024\/06\/15\/la-policia-revela-cual-es-la-mejor-forma-de-compartir-el-dni-a-traves-de-internet-sin-riesgo-de-fraude\/#:~:text=Identidad%20,original%2C%20invalid%C3%A1ndola%20para%20ciertos%20tr%C3%A1mites\"><span style=\"color: var(--theme-palette-color-1, #ff6310);\" class=\"stk-highlight\">AEPD<\/span><\/a>: <strong>es ilegal<\/strong> pedir o guardar una fotocopia completa del DNI sin base legal.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-32adc371\">\n<h3 class=\"wp-block-heading has-large-font-size\" id=\"h-usa-nuestra-herramienta\">\u2702\ufe0f Usa nuestra herramienta<\/h3>\n\n\n\n<p class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-b73781b6ddf4728051c8c40ca03277ec\">Con esta app puedes:<br>\u2705 Editar f\u00e1cilmente tu DNI<br>\u2705 Ocultar los campos sensibles<br>\u2705 A\u00f1adir una marca de agua<br>\u2705 Descargar una versi\u00f3n lista para enviar<\/p>\n\n\n\n<p class=\"has-palette-color-4-color has-text-color has-link-color wp-elements-3a77af7224f6ce892aeff23280b22fc0\">\ud83d\udc49 <strong>Evita estafas. Protege tu identidad.<\/strong><\/p>\n<\/div>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Eltecnologuia.com no almacena ning\u00fan dato de las im\u00e1genes editadas. Todo queda en tu dispositivo.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a1Deja de enviarle tu DNI a cualquiera! No tienes ni idea del riesgo que implica. En serio&#8230; Yo mismo estoy envuelto en un juicio desde 2019 por suplantaci\u00f3n de identidad. Hasta entonces jam\u00e1s me plante\u00e9 el peligro de enviar el DNI a desconocidos: Pueden pedirte el DNI a trav\u00e9s de pasarelas autorizadas, pero muchos lo [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-2452","page","type-page","status-publish","hentry"],"blocksy_meta":{"background":{"background_type":"color","background_pattern":"type-1","background_image":{"attachment_id":null,"x":0,"y":0},"gradient":"linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)","background_repeat":"repeat","background_size":"auto","background_attachment":"scroll","patternColor":{"default":{"color":"#e5e7ea"}},"overlayColor":{"default":{"color":"CT_CSS_SKIP_RULE"}},"backgroundColor":{"default":{"color":"var(--theme-palette-color-7)"}}},"styles_descriptor":{"styles":{"desktop":"[data-prefix=\"single_page\"] {background-color:var(--theme-palette-color-7);background-image:none;}","tablet":"","mobile":""},"google_fonts":[],"version":6}},"featured_image_src":null,"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.6 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Editor de DNI Gratuito<\/title>\n<meta name=\"description\" content=\"Edita tu DNI para evitar estafas y suplantaciones de identidad de forma r\u00e1pida, segura y gratuita.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/eltecnologuia.com\/en\/secure-id-editor\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Editor de DNI\" \/>\n<meta property=\"og:description\" content=\"Edita tu DNI para evitar estafas y suplantaciones de identidad de forma r\u00e1pida, segura y gratuita.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/eltecnologuia.com\/en\/secure-id-editor\/\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-23T17:28:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/eltecnologuia.com\/wp-content\/uploads\/2024\/04\/Logo-minimal.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/eltecnologuia.com\\\/editor-de-dni-seguro\\\/\",\"url\":\"https:\\\/\\\/eltecnologuia.com\\\/editor-de-dni-seguro\\\/\",\"name\":\"Editor de DNI Gratuito\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/eltecnologuia.com\\\/#website\"},\"datePublished\":\"2025-06-26T20:48:13+00:00\",\"dateModified\":\"2025-07-23T17:28:38+00:00\",\"description\":\"Edita tu DNI para evitar estafas y suplantaciones de identidad de forma r\u00e1pida, segura y gratuita.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/eltecnologuia.com\\\/editor-de-dni-seguro\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/eltecnologuia.com\\\/editor-de-dni-seguro\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/eltecnologuia.com\\\/editor-de-dni-seguro\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\\\/\\\/eltecnologuia.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Editor de DNI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/eltecnologuia.com\\\/#website\",\"url\":\"https:\\\/\\\/eltecnologuia.com\\\/\",\"name\":\"ElTecnoloGu\u00eda\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/eltecnologuia.com\\\/#\\\/schema\\\/person\\\/0e49fd576ab9051014f24e2d590a8171\"},\"alternateName\":\"ElTecnoloGu\u00eda\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/eltecnologuia.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/eltecnologuia.com\\\/#\\\/schema\\\/person\\\/0e49fd576ab9051014f24e2d590a8171\",\"name\":\"ElTecnoloGuia\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/eltecnologuia.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/cropped-favicon-1-1.png\",\"url\":\"https:\\\/\\\/eltecnologuia.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/cropped-favicon-1-1.png\",\"contentUrl\":\"https:\\\/\\\/eltecnologuia.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/cropped-favicon-1-1.png\",\"width\":512,\"height\":512,\"caption\":\"ElTecnoloGuia\"},\"logo\":{\"@id\":\"https:\\\/\\\/eltecnologuia.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/cropped-favicon-1-1.png\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Free DNI Editor","description":"Edit your ID to avoid scams and identity theft quickly, securely, and for free.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/eltecnologuia.com\/en\/secure-id-editor\/","og_locale":"en_US","og_type":"article","og_title":"Editor de DNI","og_description":"Edita tu DNI para evitar estafas y suplantaciones de identidad de forma r\u00e1pida, segura y gratuita.","og_url":"https:\/\/eltecnologuia.com\/en\/secure-id-editor\/","article_modified_time":"2025-07-23T17:28:38+00:00","og_image":[{"width":2000,"height":600,"url":"https:\/\/eltecnologuia.com\/wp-content\/uploads\/2024\/04\/Logo-minimal.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/eltecnologuia.com\/editor-de-dni-seguro\/","url":"https:\/\/eltecnologuia.com\/editor-de-dni-seguro\/","name":"Free DNI Editor","isPartOf":{"@id":"https:\/\/eltecnologuia.com\/#website"},"datePublished":"2025-06-26T20:48:13+00:00","dateModified":"2025-07-23T17:28:38+00:00","description":"Edit your ID to avoid scams and identity theft quickly, securely, and for free.","breadcrumb":{"@id":"https:\/\/eltecnologuia.com\/editor-de-dni-seguro\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/eltecnologuia.com\/editor-de-dni-seguro\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/eltecnologuia.com\/editor-de-dni-seguro\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/eltecnologuia.com\/"},{"@type":"ListItem","position":2,"name":"Editor de DNI"}]},{"@type":"WebSite","@id":"https:\/\/eltecnologuia.com\/#website","url":"https:\/\/eltecnologuia.com\/","name":"ElTecnoloGu\u00eda","description":"","publisher":{"@id":"https:\/\/eltecnologuia.com\/#\/schema\/person\/0e49fd576ab9051014f24e2d590a8171"},"alternateName":"ElTecnoloGu\u00eda","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/eltecnologuia.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/eltecnologuia.com\/#\/schema\/person\/0e49fd576ab9051014f24e2d590a8171","name":"ElTecnoloGuia","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eltecnologuia.com\/wp-content\/uploads\/2024\/04\/cropped-favicon-1-1.png","url":"https:\/\/eltecnologuia.com\/wp-content\/uploads\/2024\/04\/cropped-favicon-1-1.png","contentUrl":"https:\/\/eltecnologuia.com\/wp-content\/uploads\/2024\/04\/cropped-favicon-1-1.png","width":512,"height":512,"caption":"ElTecnoloGuia"},"logo":{"@id":"https:\/\/eltecnologuia.com\/wp-content\/uploads\/2024\/04\/cropped-favicon-1-1.png"}}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"trp-custom-language-flag":false},"uagb_author_info":{"display_name":"ElTecnoloGuia","author_link":"https:\/\/eltecnologuia.com\/en\/author\/tecnologuia\/"},"uagb_comment_info":0,"uagb_excerpt":"\u00a1Deja de enviarle tu DNI a cualquiera! No tienes ni idea del riesgo que implica. En serio&#8230; Yo mismo estoy envuelto en un juicio desde 2019 por suplantaci\u00f3n de identidad. Hasta entonces jam\u00e1s me plante\u00e9 el peligro de enviar el DNI a desconocidos: Pueden pedirte el DNI a trav\u00e9s de pasarelas autorizadas, pero muchos lo&hellip;","_links":{"self":[{"href":"https:\/\/eltecnologuia.com\/en\/wp-json\/wp\/v2\/pages\/2452","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eltecnologuia.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eltecnologuia.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eltecnologuia.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/eltecnologuia.com\/en\/wp-json\/wp\/v2\/comments?post=2452"}],"version-history":[{"count":37,"href":"https:\/\/eltecnologuia.com\/en\/wp-json\/wp\/v2\/pages\/2452\/revisions"}],"predecessor-version":[{"id":2510,"href":"https:\/\/eltecnologuia.com\/en\/wp-json\/wp\/v2\/pages\/2452\/revisions\/2510"}],"wp:attachment":[{"href":"https:\/\/eltecnologuia.com\/en\/wp-json\/wp\/v2\/media?parent=2452"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}