# TRANSFORMER — Documentacion > English version: [README.en.md](README.en.md) ## General ### Que hace TRANSFORMER TRANSFORMER es una herramienta de transformacion de archivos con multiples funciones: **conversion de imagenes** (entre WEBP, AVIF, JPG y PNG, y a ICO y TIFF), **conversion de video** (entre MP4, WebM, GIF animado y WebP animado, y unir varios en uno), **conversion de audio** (entre MP3, AAC, Opus, WebM/Opus, OGG, FLAC y WAV, y concatenar o mezclar varios), **transformacion de datos** (HTML<->MD, HTML->texto, JSON<->CSV, JSON<->YAML, XML<->JSON, hojas de calculo XLSX/ODS<->CSV/JSON, DOCX, beautify, minify y texto desde imagenes por OCR), **operaciones sobre PDF** (editor de paginas para girar, borrar y duplicar; unir, dividir/extraer, pasar a imagenes y comprimir) y **renombrado por lotes** con mascaras y variables. Todas las funciones operan sobre la misma cola de archivos: cargas una vez y eliges la pestana correspondiente en la columna derecha (**Imagen**, **Video**, **Audio**, **Datos**, **PDF** o **Renombrar**). ### Privacidad Todo el procesamiento (carga, conversion, escalado, renombrado, generacion de ZIP/PDF y edicion de metadatos) se realiza **integramente en tu equipo**, dentro del navegador. **Ningun archivo ni dato privado se sube, comparte ni almacena** en servidores externos: los archivos nunca salen de tu dispositivo. Todas las librerias (codecs WASM, motor FFmpeg, utilidades de datos) se sirven desde el propio sitio; solo si un fichero local fallara se descargaria de su CDN oficial con verificacion de integridad (SRI). Tras la primera carga todo queda en cache y el trabajo es completamente local. En tu equipo, TRANSFORMER guarda en el **almacenamiento local** del navegador la **sesión** (la lista de archivos cargados, para recuperarla al volver), el **historial de conversiones** (nombres de archivo originales y de salida), los **presets de usuario**, las **recetas**, los **ajustes de las pestañas** de conversión, las **preferencias** y, si los usas, los **modelos de upscale** de Real-ESRGAN, los **modelos de quitar fondo** y el **motor de OCR** con sus idiomas. La ventana [Configuración](#configuracion) muestra cuánto ocupa cada cosa y permite borrarla por separado o restablecerlo todo. Nada de ello sale de tu dispositivo. ### Instalacion y uso offline TRANSFORMER es una aplicacion instalable (PWA). Cuando el navegador lo permite, aparece un banner con el boton **Instalar** y el enlace **Instalar** en el pie de pagina; una vez instalada, se abre en su propia ventana, sin barras del navegador. Tras la primera visita, la aplicacion y sus motores (codecs WASM y FFmpeg) quedan almacenados en cache, por lo que puedes seguir trabajando **sin conexion a internet**. Junto al boton Convertir aparece el indicador _offline_ cuando no hay red. Si se publica una version nueva mientras la aplicacion esta abierta, se muestra un banner para refrescar y actualizar. ### Ajustes recordados Los valores de los controles de cada pestana (Imagen, Video, Audio, Datos y PDF) se recuerdan entre sesiones en este navegador. El primer control de Datos y PDF es **Operación**; el segundo (**Ajustes** en Datos, **Tipo** en PDF) elige la variante de esa operacion. El selector de **Operación** filtra sus opciones por los formatos presentes en la cola: solo aparecen las operaciones que aplican a lo cargado. La ultima entrada, **Ver todas**, revela el catalogo completo (y pasa a **Ver solo las aplicables** para volver); si la cola no encaja con ninguna operacion, se muestra el catalogo completo directamente. Si la cola cambia y la operacion activa deja de aplicar, el selector se ajusta solo a la primera que si aplique. Haz clic en su etiqueta para **restablecer** los valores por defecto de la pestana. Si editas un control con una variante aplicada, el selector pasa a "Personalizado", como siempre. ### Configuracion El icono de **engranaje** de la cabecera, junto a Mis presets, Mis recetas e Historial, abre la ventana **Configuración**. Los cambios se guardan al momento en este navegador. **Recordar entre visitas.** Tres interruptores, activados por defecto: **Recordar la sesión** (los archivos cargados), **Guardar el historial de conversiones** y **Recordar los ajustes de las pestañas**. Al desactivar uno se ofrece borrar lo ya guardado de ese tipo; desactivado, la aplicación deja de guardarlo (con el historial apagado, el modal Historial sigue mostrando las conversiones de la sesión en curso, con un aviso). **Sesión.** TRANSFORMER recuerda la lista de archivos cargados para recuperarla si cierras la pestaña o el navegador. - **Al abrir con una sesión guardada**: **Preguntar** (por defecto; aparece un aviso abajo con Restaurar y Descartar, que se oculta solo a los 10 segundos), **Restaurarla** sin preguntar o **Descartarla** sin preguntar. - **Espacio para guardar archivos**: 50 MB, 200 MB (por defecto), 500 MB o 1 GB. Es el tope del contenido de los archivos guardados; los que no caben se recuerdan solo por su nombre y vuelven como marcador, sin contenido. Bajar el tope no borra lo que ya está guardado: solo deja fuera los archivos nuevos que no quepan. **Historial.** **Entradas máximas**: 100, 500 (por defecto) o 2000. Al llegar al máximo se descartan las más antiguas. Si lo bajas por debajo de las que ya hay, se pide confirmación antes de eliminar las que sobran. **Salida.** **Nombre del ZIP**: máscara opcional con `%date%` (fecha), `%time%` (hora) y `%n%` (contador); vacío usa el nombre clásico `transformer_AAAMMDD`. **Tras convertir**: no hacer nada (por defecto) o descargar automáticamente (con una salida, el archivo; con varias, el ZIP; en un flujo guiado, solo en el último paso). **Pausa entre descargas** (0, 250 por defecto, 500 ms o 1 s) y **Sugerir ZIP a partir de** (5, 10, 20 o 50 archivos). **Metadatos de la salida**: **Limpios** (por defecto; la salida no conserva el EXIF del original), **Copiar del original sin GPS** o **Copiar todo**. Solo se aplica a JPEG, PNG y WebP, igual en la descarga suelta, los ZIP y Compartir; la edición manual de metadatos por archivo (incluido «Eliminar metadatos») siempre manda. **Interacción.** **Vista previa al pasar el cursor** (ratón; el teclado y el clic siguen abriendo el panel), **Velocidad del panel** (rápido, normal o lento), **Al cargar archivos** (seleccionarlos —por defecto—, no seleccionarlos o seleccionar solo los nuevos), **Pedir confirmación al eliminar** y **Flujos guiados** (desactivado, cada flujo ejecuta todos los pasos seguidos con los ajustes actuales). **Rendimiento.** **Avisar si se prevé más de** un uso de memoria (automático según el equipo —por defecto—, 1, 2 o 4 GB, o no avisar; vale también para los PDF grandes), **Archivos a la vez al cargar** (automático, 2, 4 u 8) y **Estimar el peso de la salida** (activado por defecto). **Datos en este navegador.** Cuánto espacio usa el sitio en total (incluida la copia de la aplicación para trabajar sin conexión) y, por separado, la sesión guardada, el historial, los presets de usuario, las recetas, los ajustes de las pestañas, las preferencias de esta ventana, los modelos de upscale y de quitar fondo descargados y el motor de OCR con sus idiomas. Cada fila tiene su botón **Borrar** o **Restablecer**, con confirmación. Borrar los modelos obliga a descargarlos otra vez (unos 105 MB) la próxima vez que uses Real-ESRGAN (los de quitar fondo, 4,6 MB el rápido y 178 MB el de calidad); borrar el motor de OCR, a descargarlo (hasta unos 9 MB) la próxima vez que reconozcas texto. **Exportar e importar configuración.** El pie de la ventana permite descargar un fichero JSON con los ajustes de las pestañas, los presets de usuario, las recetas y las preferencias, y volver a aplicarlo en otro navegador o equipo. Al importar se muestra qué bloques trae el fichero y se elige cuáles aplicar; el historial y la sesión no se incluyen. **Restablecer todo** borra todo lo anterior de una vez y recarga la página, con la aplicación como recién instalada. La lista de archivos cargada en ese momento también se vacía; tus archivos originales no se tocan. La copia de la aplicación para usarla sin conexión se conserva. ### Carga de archivos - **Arrastrar y soltar** archivos sobre la zona izquierda. - **Clic** en la zona de carga para abrir el selector de archivos. - **Ctrl+V** en cualquier momento para pegar una imagen desde el portapapeles (capturas de pantalla, imagenes copiadas de otras apps). - **URL** -- pulsa el enlace URL bajo la zona de carga, pega la direccion de un archivo (http/https) y pulsa Cargar: se descarga en el navegador y entra en la cola. Solo funciona con servidores que permitan la descarga desde otras webs (CORS); si el servidor la bloquea, se avisa (la extension de navegador, si la usas, puede saltarse esa limitacion). Formatos de imagen admitidos: `PNG JPG WEBP AVIF HEIC GIF BMP SVG ICO` Formatos de video admitidos: `MP4 WebM MOV MKV` Formatos de audio admitidos: `MP3 WAV AAC M4A OGG Opus FLAC` Formatos de datos admitidos: `HTML HTM MD JSON CSV TSV YAML YML XML DOCX XLSX XLS ODS CSS JS` Formato de documento admitido: `PDF` (operaciones de pagina, no conversion) Puedes mezclar imagenes, videos, audios y archivos de datos en la misma cola: cada archivo se procesara con la pestana activa en el momento de pulsar **Convertir** segun su tipo (imagen, video, audio o datos). ### Panel de Vista previa, Propiedades y Metadatos El panel izquierdo (la zona de carga) hace también de **ventana efímera** de vista previa, propiedades y metadatos. Al pasar el cursor por el icono de **ojo**, de **información** o de **etiqueta** de cualquier archivo -- de la lista de entrada o de la de salida -- el panel se convierte en esa vista y aparece una segunda pestaña, en cursiva, junto a «Entrada». Al retirar el cursor se cierra sola tras un instante. Mientras hay algo a la vista, el **icono de origen y el nombre de su archivo quedan acentuados** en la lista, así que siempre se sabe de qué fila viene lo que se está mirando. Un **clic** en esos mismos iconos deja la vista **fija**: la pestaña pasa a redonda y el panel acepta el ratón, de modo que se puede desplazar la lista de propiedades o de metadatos, pulsar «Analizar» o usar los controles de reproducción del vídeo y del audio. Un **segundo clic** en ese mismo icono da el paso siguiente: abre la ventana grande -- el visor a pantalla completa, el modal de Propiedades o el editor de Metadatos -- y retira el panel. La vista fija se cierra con **Escape**, con el aspa, haciendo clic fuera del panel o arrastrando archivos sobre él (la zona de carga siempre tiene prioridad). Fijada, la cabecera del panel ofrece: - **Anterior / Siguiente** (flechas arriba y abajo) -- recorre los archivos sin salir de la vista: si se están viendo los metadatos, se siguen viendo los metadatos del archivo siguiente. Solo se detiene en las filas que tienen ese icono, y las flechas se apagan en los extremos de la lista. - **Entrada / Salida** (flecha izquierda o derecha) -- salta al archivo equivalente de la otra columna, también sin cambiar de vista. Se apaga cuando ese archivo aún no se ha convertido. - **Ampliar** -- abre el archivo en el visor a pantalla completa de siempre; en la vista de Metadatos, el mismo botón abre el **editor**. Es lo mismo que hace el segundo clic en el icono de la lista. El panel ocupa exactamente la caja que ya tenía, así que la página nunca da saltos: si el contenido no cabe, se desplaza dentro del propio panel. En pantallas estrechas (menos de 700 px) y en dispositivos sin ratón no hay hover: allí los iconos siguen abriendo, con un toque, el visor a pantalla completa, el modal de Propiedades y el editor de Metadatos. ### Botones de accion global - **Convertir** -- lanza o cancela la conversion de todos los archivos cargados segun la pestana activa (Imagen, Video, Audio o Datos). Cada archivo se procesa con el motor adecuado a su tipo. El boton solo se enciende (con el borde resaltado) cuando va a hacer algo: hay ficheros con los que trabajar en la pestana activa y la combinacion de operacion, ajustes, ficheros seleccionados y sus ediciones (recorte, giro, trim, edicion del PDF) no es la que se acaba de convertir. Si no hay nada con lo que trabajar, se apaga y, al pasar el raton por encima, un aviso dice por que. Tras una conversion completa pasa a **Renombrar** (ver [Convertir y renombrar](#convertir-y-renombrar)) hasta que cambie algo. Borrar un convertido o cancelar a medias lo deja encendido. En un [flujo guiado](#flujos-guiados) el botón es el del paso: **Siguiente** con el indicador `1/2`, o **Convertir** con el suyo en el último paso, con fondo y borde azules. - **Renombrar** -- (Visible en la pestana Renombrar) aplica los cambios masivos de nomenclatura a todos los archivos. Solo cambia nombres: nunca convierte. - **ZIP** -- descarga todos los archivos convertidos en un unico ZIP. - **Descargar todos** -- inicia la descarga individual secuencial de todos los archivos generados. - **PDF** -- abre la pestana PDF con la operacion **Imagenes → PDF** puesta, que es la que monta el documento. Ya no genera nada por su cuenta: hay un solo camino para hacer un PDF desde imagenes, y esta descrito en [Imagenes → PDF](#imagenes--pdf). Con las imágenes ya convertidas entra directamente en el último paso del flujo guiado, con **Convertir 2/2**. - **Compartir** -- (moviles y tablets con Web Share API) envia los archivos convertidos a otras apps del dispositivo. Maximo 10 archivos por envio; con mas se sugiere el ZIP. Solo visible si el navegador lo soporta. ### Flujos guiados Algunas tareas piden pasar por dos pestañas: convertir unas imágenes en **Imagen** y montarlas en **PDF**, o un DOCX en **Datos** antes de maquetarlo. En vez de avisar de lo que falta y dejar que vuelvas por tu cuenta, TRANSFORMER te lleva de una pestaña a otra con el botón **Siguiente**: - El botón muestra el paso en el que estás (`1/2`, `2/3`…) y cambia de aspecto: fondo y borde azules, distintos del encendido normal. Al pasar el ratón, el aviso dice qué va a hacer ("Convertir 3 imágenes y volver a PDF"). - Sobre los controles aparece una **franja** con el nombre del flujo y el paso ("Preparando imágenes para un PDF · Paso 1 de 2"), y un punto azul marca la pestaña a la que vas después. - Cada paso deja la pestaña preparada: la operación elegida y los ficheros que le tocan, seleccionados. Puedes cambiar los ajustes antes de pulsar **Siguiente**; lo que no puedes es perderte el paso siguiente. - El último paso es el botón de siempre, **Convertir**, con su indicador; al pulsarlo, el flujo termina. - Donde el flujo empieza, una nota explica los pasos y ofrece un atajo, **Usar ajustes actuales y …**, que hace todos los pasos seguidos con los ajustes que ya tienen las pestañas. El flujo se abandona al **cambiar de pestaña a mano**, al **añadir archivos** o con **Escape** (si no hay un diálogo, el inspector o un menú abiertos, que se cierran antes). Cancelar una conversión, o que no salga ninguna, te deja en el mismo paso para volver a intentarlo; si solo fallan algunos ficheros, el flujo sigue con los que salieron y la nota dice cuántos se saltan. Flujos disponibles: - **Imágenes → PDF** -- con imágenes sin convertir, en PDF: Imagen (convertir) → PDF (montar). Ver [Imagenes → PDF](#imagenes--pdf). - **DOCX → PDF** -- con DOCX sin convertir y la operación Texto e imágenes → PDF: Datos (DOCX → HTML) → PDF (maquetar). Ver [Texto e imagenes → PDF](#texto-e-imagenes--pdf). - **Unir imágenes y PDF** -- con imágenes sin convertir, PDF cargados y la operación Unir: Imagen → PDF (montar las imágenes en un PDF) → PDF (unir). Ver [Unir](#unir). ### Recetas Una **receta** es una secuencia con nombre de pasos que se aplica de una vez a los archivos seleccionados: por ejemplo, «imágenes a WEBP de 1920 px → nombres en minúsculas → descargar el ZIP». A diferencia de los [flujos guiados](#flujos-guiados), que son fijos y se conducen paso a paso con el botón Siguiente, una receta la compones tú, se guarda y corre sola de principio a fin. Y a diferencia de **Mis presets**, que solo ponen ajustes en las pestañas, una receta además los ejecuta. **Mis recetas.** El icono de lista con un triángulo de la cabecera, junto a Mis presets, abre la ventana. Cada receta muestra su recorrido (`Imagen → Renombrar · ZIP al terminar`; al pasar el cursor, el detalle de cada paso) y los botones **Aplicar**, **Duplicar**, **Editar** y **Eliminar**. Debajo, **ejemplos** agrupados por tipo que se pueden aplicar tal cual o copiar a tus recetas para cambiarlos: - **Imagen**: **Web ligera** (WEBP de 1920 px de ancho como mucho, nombres en minúsculas) y **Fotos para email** (JPG de 1280 px y 500 KB como mucho). - **PDF**: **Escaneos a PDF** (a JPG y montados en un PDF A4), **Unir PDF** (los seleccionados, en el orden de la lista) y **PDF a imágenes** (cada página en JPG a 150 ppp). - **Audio y vídeo**: **Audio a MP3** (VBR V0, volumen normalizado) y **Extraer el audio de vídeos** (MP3). - **Datos**: **Texto de capturas (OCR)** (un .txt por imagen, español e inglés). - **Varios tipos**: **Todo para web** (imágenes a WEBP, vídeos a WebM 720p y audios a Opus, de una vez). El pie tiene **Nueva receta**, **Importar** y **Exportar** (un fichero JSON solo con las recetas; también viajan en Exportar configuración). **Componer una receta.** Un paso es **una pestaña con sus ajustes**: Imagen, Vídeo, Audio, Datos, PDF o Renombrar. Los ajustes no se escriben en la ventana: configura la pestaña como siempre, elige en **Añadir paso** esa pestaña (sale preseleccionada la que tienes abierta) y la receta copia sus ajustes de ese momento. Cada paso se resume en una línea, por ejemplo `WEBP · calidad 80 · 1920 px de ancho (máx.) · brillo +10`. - **Cambiar un paso**: el lápiz lleva a su pestaña con los ajustes del paso puestos y una franja «Editando el paso 1 de "Web ligera"» con **Actualizar paso** y **Cancelar**. En los dos casos la pestaña vuelve después a los ajustes que tenía. - **Ordenar**: arrastrando por el asa ⋮⋮ o con las flechas de cada paso (útiles con teclado y en el móvil). **Quitar** con la papelera. Hasta 12 pasos. - **Al terminar**: no hacer nada, **descargar el ZIP** o **descargar uno a uno** lo que haya salido de la receta. Con **Descargar ZIP**, si solo sale un archivo se descarga ese archivo, sin ZIP. Solo se descarga lo que ha producido la receta: una salida anterior de un archivo seleccionado que ningún paso tocó no entra. - **Avisos**: un paso marcado en ámbar avisa de algo que no saldría como se espera: dos pasos Imagen (el segundo vuelve a convertir desde el original y sustituye al primero) o Imágenes → PDF sin un paso Imagen antes. - **Probar con 1 archivo** aplica la receta, tal como está en el editor y sin guardarla, solo al primer archivo seleccionado y sin descargar nada. Al terminar, la franja ofrece **Volver a la receta** para seguir ajustándola. **Aplicar una receta.** Con **Aplicar** en Mis recetas, o con clic derecho sobre la lista de entrada → **Aplicar receta**. Actúa sobre los **archivos seleccionados**; cada paso solo toca los de su tipo. Mientras corre, una franja dice por qué paso va (`Receta «Web ligera» · Paso 1 de 2 · Imagen`) con un botón **Cancelar**, la aplicación pasa visiblemente por cada pestaña y cada archivo enseña su progreso de siempre. - Los nombres solo cambian en los pasos **Renombrar**: la máscara que tengas en esa pestaña no se aplica durante la receta. - Si la receta tiene un paso Vídeo, su paso Audio no extrae el audio de los vídeos (sustituiría su conversión): solo procesa los archivos de audio. - **Imágenes → PDF** monta solo las imágenes que salen de la receta, no otras convertidas antes. - Un paso sin archivos a los que aplicarse se salta, y se avisa al final. - **Al terminar**, las pestañas vuelven a los ajustes que tenías, la selección a la de antes y la pestaña activa a la tuya; se hace la acción de cierre y un aviso resume el resultado («Receta «Web ligera»: 12 archivos de salida, 1 error. Sin nada que hacer: 3. Vídeo.»). La descarga automática de **Tras convertir** no actúa en los pasos intermedios: manda la acción de cierre de la receta. ### Botones por archivo -- columna izquierda (originales) - **Vista previa** -- pasa el cursor sobre el icono de ojo y la imagen aparece en el panel izquierdo; en los vídeos, mover el ratón sobre el icono recorre el storyboard; en los **PDF** aparece su primera pagina. Un clic fija la vista (con controles de reproducción para vídeo y audio) y un segundo clic la lleva a pantalla completa. - **Propiedades** -- la ficha del archivo (nombre, tipo MIME, dimensiones, duración, fecha) en el mismo panel, con las filas bajo demanda «Analizar» para el EXIF y el códec/bitrate. - **Metadatos** -- (solo imágenes) el EXIF del original en ese mismo panel al pasar el cursor; el clic fija la vista y abre paso al editor desde su cabecera. - **Eliminar** -- elimina ese archivo de la cola. - Un fichero **generado** por una operación (un PDF unido, una página extraída a imagen...) aparece tambien en la columna izquierda como placeholder «Generado»: se puede seleccionar para encadenar otra operacion, pero no tiene las acciones de un importado. ### Botones por archivo -- columna derecha (convertidos) - **Renombrar en linea** -- edita manualmente el nombre de un archivo individual (icono de lapiz). - **Metadatos** -- pasa el cursor por el icono para leer en el panel izquierdo los metadatos del archivo (el EXIF del original a la izquierda, lo que llevará la salida a la derecha); el clic fija esa vista y el editor se abre desde el botón de su cabecera. El editor: en imagenes edita los campos EXIF (Artista, Copyright, Descripcion, etc.); los metadatos _no_ se copian del original automaticamente: la salida es limpia por defecto. En video y audio edita Titulo, Artista y Comentario (mas Album en MP3, FLAC, OGG, Opus y WAV), escritos por FFmpeg al exportar mediante un remux sin re-codificar. Los metadatos editados viajan en todas las vias de salida (descarga, ZIP, copiar, compartir, PDF); si el formato de destino no admite escritura (AVIF, GIF, BMP, SVG) la edicion se bloquea en el modal y al exportar se avisa de que no se incluiran. "Eliminar metadatos" vacia los campos editados y elimina tambien los preexistentes del archivo original (incluido el EXIF de origenes renombrados sin convertir y las etiquetas de video/audio). En WebP sin cabecera VP8X el XMP se inserta igualmente sin sintetizarla (los decodificadores lo toleran y asi no se corrompe el archivo). - Un punto verde junto al nombre indica que la salida lleva metadatos editados (el tooltip lista los campos rellenos), y el hover sobre el boton muestra en el panel izquierdo los valores que llevara el archivo descargado. - GPS acepta decimal (`40.7128`, `-74.0060`) y grados-minutos-segundos (`40° 42' 51" N`, `40,42,51N`); se normaliza a decimal al guardar, y un valor no reconocido marca el campo en rojo y se avisa al guardar. La Fecha/Hora espera el formato EXIF `2026:09:04 15:30:12`. - El icono de copiar de cada fila vuelca el valor original en el campo de salida (solo en edicion individual). **Verificar** relee en memoria el archivo resultante y muestra que quedo grabado por campo, sin tocar el archivo real. - **Vista previa** -- el resultado convertido en el panel izquierdo (hover) y fijado con un clic; los vídeos convertidos se reproducen allí mismo. - **Propiedades** -- la ficha del archivo generado en ese mismo panel: peso, compresión frente al original, dimensiones y, bajo demanda, códec y bitrate. - **Abrir** -- abre el archivo convertido en una nueva pestana del navegador. - **Copiar** -- copia la imagen al portapapeles. Para formatos no soportados directamente por el navegador (AVIF, etc.) se convierte automaticamente a PNG como fallback. No disponible para videos. - **Descargar** -- descarga el archivo individual. - **Compartir** -- envia el archivo convertido a otra app del dispositivo (Web Share). Si el dispositivo no admite compartir archivos, comparte el nombre como texto. - **Eliminar** -- elimina solo el resultado convertido, manteniendo el original en cola. En un fichero generado no hay original: elimina el fichero entero. ### Seleccion y operaciones por lotes La conversion y el resto de operaciones masivas actuan solo sobre los archivos **seleccionados** (resaltados en la lista izquierda). Los archivos entran seleccionados por defecto al cargarlos. - **Click / Ctrl+Click en el nombre** -- selecciona o deselecciona ese archivo. - **Shift+Click** -- selecciona el rango desde el ultimo archivo pulsado hasta este, estilo explorador de archivos. - **Ctrl+A** -- selecciona todos los archivos elegibles de la pestana activa. - **Botones Todos / Ninguno / Invertir** -- en la barra "Archivos"; actuan solo sobre los archivos elegibles segun la pestana activa (Imagen, Video, Audio, Datos o Renombrar). - **Clic derecho** -- en cualquier archivo de la lista abre un menu contextual con las acciones de su fila (mismo icono y orden) y, separadas, las acciones globales: Convertir (entrada), Descargar todo (salida) y Eliminar todo (ambas listas). Con seleccion parcial, el contador de la barra "Archivos" muestra _N sel / N total_. Bajo la barra "Archivos" aparece la **barra de operaciones por lotes** cuando hay seleccion activa en las pestanas Imagen o Video: - **Imagen** -- rotar 90° a izquierda/derecha y voltear horizontal/vertical todas las imagenes seleccionadas de una vez (las transformaciones se aplican al convertir, igual que en la vista previa individual), y **Metadatos**: edita los campos una vez y se aplican a todas las imagenes seleccionadas. - **Video** -- rotar y voltear los videos seleccionados (se aplica en la conversion via FFmpeg) y **recorte por porcentaje**: indica inicio y fin en % y pulsa _Aplicar_; cada video calcula su recorte absoluto a partir de su duracion efectiva actual. _Quitar_ elimina el recorte de los seleccionados. Si la seleccion mezcla orientaciones (horizontal/vertical) se muestra un aviso. ### Indicadores de motor El panel derecho resume el estado de carga de la pestaña activa en un **piloto** anclado abajo a la izquierda: un punto de color -- gris en espera, azul durante la carga, verde cuando esta listo y rojo si falla --. La etiqueta con el detalle aparece al pasar el raton por encima; sin nada que contar, el piloto se oculta. El piloto cubre los codecs WASM de imagen (`libwebp`, `libavif`, `MozJPEG`, `OxiPNG`), el motor de video y audio (FFmpeg.wasm, que se descarga la primera vez que se procesa un video o audio y queda en cache) y las librerias de Datos y PDF. La pestaña activa del panel derecho se dibuja como una pestaña, con el fondo del panel. ### Archivos muy grandes y memoria Antes de convertir un video o audio que pueda agotar la memoria de la pestana (estimacion segun tamano y memoria del dispositivo) aparece una confirmacion con la opcion de continuar, o de recortar el clip o reducir la resolucion antes de reintentar. La estimacion cuenta siempre el archivo de entrada entero (FFmpeg lo recibe completo aunque haya recorte), pero la parte de salida y trabajo se reduce con el recorte y, en video, con una resolucion de salida menor que la de origen. Si una conversion falla por falta de memoria, se muestra un aviso con esas mismas sugerencias. ### Atajos de teclado - `Ctrl+Enter` -- Convertir - `Ctrl+A` -- Seleccionar todos los elegibles de la pestana activa - `Supr` -- Eliminar archivo con foco - `Ctrl+Z` -- Deshacer la última operación de la lista (ver «Deshacer y rehacer») - `Ctrl+Mayús+Z` o `Ctrl+Y` -- Rehacer - `Espacio` -- Seleccionar/deseleccionar archivo (lado izquierdo) - `Ctrl+Espacio` -- Vista previa del archivo con foco en el panel izquierdo (miniatura flotante en pantallas estrechas) - Flecha arriba/abajo -- Mover foco entre archivos de la misma columna - Flecha izquierda/derecha -- Cambiar foco a la columna opuesta - `0` -- Pestana Renombrar - `1` `2` `3` `4` -- Pestanas Imagen / Video / Audio / Datos - `Ctrl+Flecha abajo` -- Descargar todos individualmente - `Shift+Flecha abajo` -- Descargar ZIP - `Ctrl+Shift+Flecha abajo` -- Descargar ZIP + Visor ### Deshacer y rehacer Se pueden deshacer los **borrados de un archivo** (Supr o la papelera de la fila, en cualquiera de las dos columnas) y los **renombrados** (el lápiz de una fila o el botón **Renombrar** de la pestaña, que cuenta como un solo paso para todo el lote). Tras cada una de estas operaciones aparece un aviso con el botón **Deshacer**; después de deshacer, el aviso ofrece **Rehacer**. Lo mismo con el teclado: `Ctrl+Z` deshace y `Ctrl+Mayús+Z` o `Ctrl+Y` rehacen. - Se guardan los últimos 20 pasos de la sesión abierta; una operación nueva descarta lo que se podía rehacer. - No se deshacen los borrados masivos (eliminar todos los cargados, todos los generados o las salidas de la selección), que siguen pidiendo confirmación, ni las conversiones. **Eliminar todos los cargados** es definitivo y vacía el historial de deshacer. - Durante una conversión no se puede deshacer ni rehacer. - Con el visor abierto, `Ctrl+Z` es del editor de imagen o de PDF, y dentro de un campo de texto deshace lo escrito. ### Renombrado por lotes Cambia a la pestana **Renombrar** (en la parte superior de la columna derecha) para modificar los nombres de salida masivamente. El renombrado funciona igual sobre archivos de imagen y de video: - **Mascara de nombre:** Escribe un texto base; al pasar el raton o enfocar el campo **Nombre** se revelan los chips de variables y el contador `%n%`, y al enfocar **Reemplazar**, sus comodines (haz clic en un chip para insertarlo, ej. `img_%date%_%n%`). Si lo dejas vacio, se mantiene el nombre original. - **Variables soportadas:** `%name%` (nombre original), `%n%` (contador numerico), `%ext%` (extension original), `%date%` (fecha actual), `%time%` (hora actual), `%width%` (ancho de salida) y `%height%` (alto de salida). - **Extension:** Permite forzar una extension especifica de salida independientemente del formato de conversion. - **Contador:** Configura el numero de _Inicio_, el _Paso_ (incremento por archivo) y los _Digitos_ (ceros a la izquierda, ej. 3 digitos = 001). - **Previsualizacion y Aplicacion:** Los nombres proyectados se muestran en cursiva en la lista derecha. Pulsa el boton **Renombrar** para aplicar y fijar los nombres en los archivos. Mientras la mascara no sea `%name%` y no se haya aplicado aun, la pestana **Renombrar** se muestra en cursiva. Los nombres duplicados se marcan en la lista derecha con un aviso en color ambar en cuanto dos archivos ya convertidos producirian el mismo nombre de salida (comparacion sin distinguir mayusculas ni espacios en los extremos; incluida la previsualizacion de la mascara para los seleccionados). Al exportar en ZIP, ZIP con visor, Descargar todos o compartir, los duplicados tambien se avisan antes de continuar. #### Convertir y renombrar Las variables `%width%` y `%height%` y la extensión nueva salen de la conversión, así que renombrar tiene más sentido después de convertir. Tras una conversión completa, el botón **Convertir** de la pestaña (Imagen, Vídeo, Audio, Datos o PDF) pasa a **Renombrar** y te lleva a esta pestaña con los ficheros que acabas de convertir seleccionados: convertir y renombrar son dos clics más la máscara. Si cambias un ajuste, la selección o las ediciones, o añades ficheros (entran seleccionados), vuelve a ser **Convertir**. En esta pestaña, **Renombrar** solo cambia nombres: con archivos sin convertir, les da nombre a los originales, sin convertirlos. #### Reemplazar (buscar y sustituir) El bloque **Reemplazar** permite buscar un patron dentro del nombre base (tras aplicar la mascara) y sustituirlo por otro texto. Se aplica a todos los archivos. - **Campo _patron_:** Texto literal o patron tipo _glob_ a buscar. Si se deja vacio, no se aplica sustitucion. - **Campo _sustituto_:** Texto con el que se reemplazara cada coincidencia. Puede estar vacio (equivale a eliminar el patron encontrado). - **Comodines en el patron:** - `*` o `%any%` -- cualquier numero de caracteres (incluido ninguno). - `?` o `%chr%` -- un unico caracter cualquiera. - `#` o `%num%` -- un digito (0-9). - `@` o `%txt%` -- una letra (incluye acentos). - `%Nstart%` (ej. `%3start%`) al inicio -- los primeros _N_ caracteres del nombre. - `%Nend%` (ej. `%3end%`) al final -- los ultimos _N_ caracteres del nombre. - **Variable en el sustituto:** `%N%` inserta un contador simple (1, 2, 3...) basado en la posicion del archivo en la lista. - **Sensibilidad a mayusculas (_Aa_):** Por defecto la busqueda ignora mayusculas/minusculas. Activa la casilla **Aa** para exigir coincidencia exacta. - **Orden de aplicacion:** Primero se resuelven las variables de la mascara (`%name%`, `%n%`, etc.), despues se ejecuta el reemplazo, y por ultimo la transformacion de _Caso_. #### Caso (transformacion de mayusculas/minusculas) El selector **Caso** aplica una transformacion final al nombre base (no afecta a la extension). Opciones disponibles: - **--** (por defecto): sin transformacion, se conserva tal cual. - **minusculas:** convierte todo el nombre a minusculas. Ej. _Mi_Foto_01_ -> _mi_foto_01_. - **Primera:** pone en mayuscula unicamente la primera letra del nombre y el resto en minusculas. Ej. _mi_FOTO_01_ -> _Mi_foto_01_. - **Palabras:** pone en mayuscula la primera letra de cada palabra (estilo _Title Case_). Ej. _mi_foto_de_viaje_ -> _Mi_Foto_De_Viaje_. - **MAYUSCULAS:** convierte todo el nombre a mayusculas. Ej. _mi_foto_01_ -> _MI_FOTO_01_. ### Idiomas La interfaz está disponible en **español** e **inglés**. El idioma se elige en la sección **Idioma** de Configuración o se deduce del navegador (opción **Automático**); la Ayuda tiene versión inglesa y hay una página inglesa propia en [/en/](https://edpanfleto.com/kdgdkd/transformer/en/), pensada para buscadores. Cuando la aplicación se abre embebida en Commander, hereda el idioma del host y el selector deja de mostrarse. Los detalles del sistema están en [docs/transformer_i18n.md](docs/transformer_i18n.md) y la versión inglesa de este documento en [README.en.md](README.en.md). ### Páginas por tarea y enlaces con la operación elegida Hay una página propia para las tareas más buscadas (por ejemplo [/convertir-heic-a-jpg/](https://edpanfleto.com/kdgdkd/transformer/convertir-heic-a-jpg/), [/comprimir-pdf/](https://edpanfleto.com/kdgdkd/transformer/comprimir-pdf/) o [/unir-pdf/](https://edpanfleto.com/kdgdkd/transformer/unir-pdf/)): es la misma aplicación, con un título y un texto que explican la tarea y la pestaña y la operación ya puestas. El pie de la página principal enlaza a todas. Con `?preset=` cualquier enlace abre la aplicación igual, con la operación elegida: `?preset=heic-to-jpg`, `compress-images`, `remove-background`, `video-to-gif`, `compress-video`, `video-to-mp3`, `compress-pdf`, `merge-pdf`, `pdf-to-jpg` y `excel-to-csv`. El parámetro se consume al arrancar, igual que el `#image` de las pestañas, y los ajustes se pueden cambiar después como siempre. --- ## Imagen ### Flujo de conversion de imagen 1. Selecciona la pestana **Imagen** en la parte superior de la columna derecha. 2. Elige **Preset**, **Formato** de salida (WEBP, AVIF, JPG, PNG o ICO) y **Escala**. 3. Ajusta los controles avanzados especificos del formato si lo necesitas (los detalles de cada uno estan en la seccion _Formatos_). 4. Pulsa **Convertir**. Puedes cancelar durante el proceso. 5. Los archivos generados aparecen en la columna derecha. ### Formatos de entrada admitidos Puedes cargar archivos de imagen en los siguientes formatos: `JPG PNG GIF WebP BMP TIFF HEIC HEIF AVIF SVG ICO`. Los archivos HEIC/HEIF se decodifican con `heic2any`, y los TIFF con `UTIF.js` (que solo pinta Safari), antes de pasar al encoder seleccionado. De un TIFF de varias paginas se usa la primera, y se avisa. Un TIFF en CMYK se pasa a RGB con una formula simple, sin perfil ICC (los colores pueden variar respecto a un programa de maquetacion), y el CMYK con compresion JPEG, poco habitual, puede salir mal. Los SVG se rasterizan al tamano solicitado. ### Editar la imagen en el visor El visor a pantalla completa de una imagen es también su editor. Lo que se hace en él no toca el fichero: se guarda con la imagen y se aplica al convertir (y a la miniatura de la fila). El botón **✓** cierra guardando (también lo que esté a medias en el modo abierto) y el **✕** (o `Esc`) cierra deshaciendo todo lo hecho desde que se abrió. Un clic fuera de la imagen no cierra el visor. La barra tiene cuatro **modos**, que se excluyen entre sí. Recortar, Enderezar y Borrar funcionan igual: lo que se hace en ellos es un **borrador** que se guarda con **Aplicar** (o `Enter`) y se tira con **Cancelar** (`Esc`). Mientras uno está abierto, girar, voltear y restablecer se desactivan, y Deshacer y Rehacer recorren los pasos del borrador. - **Mover** (sin ningún modo activo): arrastrar desplaza la imagen, la rueda la amplía alrededor del cursor y el doble clic alterna entre **ajustada** y **tamaño real** (también con el botón **1:1**). Si hay un recorte aplicado, solo se ve el área recortada, que es lo que saldrá. - **Recortar** (`C`): se ve la imagen entera con el marco encima. Arrastrar los tiradores lo ajusta, arrastrar dentro lo mueve y arrastrar fuera dibuja uno nuevo. La subbarra fija la **proporción** (Libre, Original, 1:1, 4:3, 3:2, 16:9, 4:5; el botón ⇄ la pone en vertical u horizontal) y el **ancho y alto** exactos en píxeles. El recorte solo se guarda con **Aplicar** (o `Enter`), que no cierra el visor; **Cancelar** (`Esc`) deja el que había y **Quitar recorte** pone el marco a la imagen entera (el recorte se quita al Aplicar). Si pasas a otro modo (o vuelves a pulsar Recortar) sin aplicar, el marco no se guarda, pero se conserva como borrador y reaparece al volver a Recortar; cerrar el visor lo descarta. - **Enderezar** (`S`): gira la imagen un ángulo libre, de −45° a 45° en décimas, con el deslizador o el campo numérico; las flechas `←` `→` lo afinan en décimas (con `Mayús`, en grados). Mientras gira, una **cuadrícula fija** en pantalla sirve de guía para poner rectos el horizonte o una pared. Al girar quedan cuatro esquinas al descubierto, y la subbarra decide qué llevan: - un **color** a elegir; la primera vez es el que da **Auto**, el color del borde de la imagen (la mediana de su contorno); - **Transparentes**: esquinas transparentes en PNG, WEBP y AVIF; en JPG, que no admite transparencia, salen blancas; - **Sin esquinas**: recorta al mayor rectángulo con la proporción del original que no toca ninguna esquina, y sustituye al recorte que hubiera. Mientras ajustas el ángulo, ese recorte se ve como un marco fijo. El recorte se mide sobre la imagen ya enderezada: si cambias el ángulo después, el recorte se desplaza para seguir sobre la misma parte de la foto. Las zonas borradas giran con el contenido, y una zona dibujada con la imagen enderezada sale recta en pantalla y en el resultado. Con ángulo 0 no cambia nada. - **Borrar zonas** (`E`): arrastrar sobre la imagen marca una zona que se rellena al soltar con el color de **Relleno**; las zonas se guardan con **Aplicar** (o `Enter`) y **Cancelar** (`Esc`) deja las que había. Como en Recortar, pasar a otro modo sin aplicar las conserva como borrador. Con **Auto**, cada zona nueva toma el color que la rodea (la mediana de su borde), lo que tapa sin que se note un texto o un logo sobre un fondo liso. Un clic sobre una zona la elige (la recién dibujada queda elegida) y **Quitar la zona elegida** (o `Supr`) la quita; **Quitar todas** hace lo que dice. Para rehacer una zona quitada, Deshacer. Girar y voltear actúan sobre lo que se ve (el enderezado va antes: giras y volteas la imagen ya enderezada): con la imagen girada 90°, voltear en horizontal sigue volteando de izquierda a derecha. El recorte y las zonas van pegados al contenido, así que girar o voltear después no los cambia de sitio. **Deshacer** y **Rehacer** (`Ctrl+Z` y `Ctrl+Mayús+Z`) recorren todo lo guardado mientras el visor está abierto (dentro de un modo, los pasos de su borrador), y **Restablecer** deja la imagen como vino (también quita el enderezado). Atajos del visor: `R` / `Mayús+R` girar, `F` / `Mayús+F` voltear en horizontal o en vertical, `C` recortar, `S` enderezar, `E` borrar, `0` ajustar, `1` tamaño real, mantener `Espacio` para mover la imagen desde cualquier modo, `Enter` aplica y `Esc` cancela el modo activo (sin modo, `Esc` cierra el visor descartando los cambios). Mientras el visor está abierto, los atajos de la lista de archivos (Supr, las pestañas, Ctrl+Enter...) no actúan. ### Escala y dimensiones El **slider Escala** ajusta el tamano en porcentaje respecto al original. Haz clic en la etiqueta _Escala_ para abrir el modal avanzado con las siguientes opciones: - **Porcentaje numerico:** Introduce el valor exacto o utiliza los botones **/2** (mitad) y **x2** (doble) para ajustes rapidos. - **Modo px:** Define como se interpretan el ancho y el alto objetivo. Hay cinco modos, divididos en dos familias. **Modos de un solo factor** (usan un unico campo: porcentaje, ancho o alto): - **Maximo:** no excedera la dimension indicada; las imagenes ya mas pequenas se dejan intactas. - **Minimo:** cubrira la dimension indicada; las imagenes ya mas grandes se dejan intactas. - **Forzar:** aplica la dimension de manera estricta, en ambos sentidos. En estos tres modos rige la **prioridad de campo activo**: el ultimo campo que edites (porcentaje, ancho o alto) se convierte en la regla de escalado activa, y los campos inactivos se muestran tachados. El otro lado siempre se deduce de la proporcion original, asi que **nunca se deforma la imagen**, pero tampoco puedes fijar ancho y alto a la vez. **Modos de ajuste** (usan ancho **y** alto simultaneamente, para llegar a una dimension exacta sin deformar): - **Crop centrado:** escala hasta *cubrir* el ancho y el alto pedidos y recorta por el centro lo que sobra en el eje que se pasa. Salida siempre del tamano exacto, sin bandas y sin distorsion; el precio es que se pierde parte de la imagen. Es el modo para miniaturas cuadradas, portadas y galerias de rejilla. - **Letterbox:** escala hasta que la imagen *quepa* entera dentro del ancho y el alto pedidos, y rellena el hueco restante con bandas. Salida del tamano exacto, sin distorsion y sin perder nada; el precio son las bandas. Es el modo para encajar material de proporciones mezcladas en un lienzo comun. Con Letterbox aparece el control **Bandas**, con un selector de color (negro por defecto) y una casilla **Transparentes**. Las bandas transparentes requieren un formato con canal alfa (PNG, WEBP, AVIF): en JPG, que no lo tiene, se rellenan de blanco. En los modos de ajuste el porcentaje deja de intervenir y su slider se deshabilita, ya que el factor lo determinan el ancho y el alto. Si solo rellenas uno de los dos campos, ambos modos se comportan como **Forzar** sobre esa dimension. El ancho y el alto se refieren siempre a la **imagen final**: si has rotado la imagen 90 o 270 grados, el recorte y las bandas se calculan sobre el resultado ya rotado, no sobre el original. Bajo el modal aparece una linea de ayuda con el efecto del modo elegido y una previsualizacion del resultado sobre la imagen de referencia (por ejemplo `1600x900 -> 500x500 - recorta el 44% del area`). ### Interpolacion El desplegable **Interpolacion** del modal de escala decide como se calculan los pixeles nuevos al cambiar de tamano: - **Suave (fotografia)** -- promedia los pixeles vecinos. Es el comportamiento por defecto y el adecuado para fotografias y cualquier imagen con degradados: los bordes quedan limpios y sin dientes de sierra. - **Nearest neighbor (pixel art)** -- copia el pixel mas cercano sin mezclar colores. Los bordes se mantienen absolutamente duros y no se introduce ningun color nuevo. Es lo que hace falta en **pixel art**, **capturas de pantalla**, graficos con texto pequeno, lineas de un pixel o diagramas: con interpolacion suave, ampliar pixel art lo emborrona y reducir una captura desdibuja el texto. Nota: al _ampliar_, Nearest neighbor produce el clasico efecto de pixeles cuadrados. Si lo que buscas es ampliar una fotografia sin que se vea borrosa, la herramienta adecuada no es la interpolacion sino el **Upscale** descrito a continuacion. ### Upscale (ampliacion) La casilla **Upscale** amplia la imagen antes de encajarla en las dimensiones de destino. Solo actua **cuando el destino es mayor que el origen**: si estas reduciendo, se ignora sin avisar. Se elige el factor (**2x** o **4x**) y el motor: - **Lanczos3 (rapido):** remuestreo Lanczos de radio 3, separable y con alfa premultiplicado, ejecutado en un worker propio. No descarga nada, funciona sin conexion y tarda del orden de segundos. Da bordes bastante mas limpios que el escalado del canvas, pero no inventa detalle que no estuviera ya en la imagen. Es el motor por defecto. - **Real-ESRGAN (IA):** red neuronal de superresolucion ejecutada con `onnxruntime-web`, por tiles de 128 px con solape para evitar costuras. Si reconstruye textura y bordes. A cambio: **descarga unos 105 MB la primera vez** (`onnxruntime-web` desde jsDelivr y el modelo ONNX desde Hugging Face), que quedan en cache del navegador para los usos siguientes, y necesita **WebGPU** para ser practico. Sin WebGPU cae a WASM de un solo hilo, del orden de decenas de minutos por megapixel, y TRANSFORMER avisa de ello. Como la red trabaja en RGB, el canal alfa se amplia por separado con Lanczos3 y se reinyecta, de modo que la transparencia se conserva. El modal muestra en todo momento un aviso con el coste esperado del motor y factor seleccionados. Durante la conversion, la barra de progreso del archivo refleja las fases (descarga del modelo, inicializacion e inferencia), y el boton **Cancelar** aborta el proceso al instante. El upscale se aplica sobre el area realmente necesaria (ya recortada), no sobre la imagen entera, para no gastar tiempo en pixeles que se van a descartar. > Real-ESRGAN y [Quitar fondo](#quitar-fondo) son las únicas funciones de TRANSFORMER que descargan algo bajo demanda desde un tercero, y solo si las activas explícitamente. Aun asi **tus imagenes no salen del equipo**: lo que viaja es la descarga del modelo, en sentido contrario. Todo el procesamiento sigue siendo local. ### Quitar fondo La celda **Fondo** abre el modal que quita el fondo de cada imagen con una red neuronal de segmentación ejecutada con `onnxruntime-web` en un worker, y deja el sujeto con transparencia. Dos motores, los dos en CPU: - **Rápido (U²-Netp):** descarga 4,6 MB la primera vez y tarda un par de segundos por imagen. La máscara se calcula a 320 px y se reescala, así que en pelo o detalles finos el borde queda algo blando. - **Calidad (ISNet general-use):** descarga 178 MB la primera vez y tarda del orden de 10–20 s por imagen. Máscara a 1024 px, con bordes mucho más precisos, pelo incluido. Ajustes: **Borde** contrae (para comerse el halo del fondo) o expande la máscara, y **Suavizado** la difumina; ambos en píxeles de la imagen. **Rellenar** pone el sujeto sobre un color en vez de dejar transparencia; JPG, que no la admite, sale con fondo blanco si no eliges color. **Recortar al sujeto** ajusta el encuadre al sujeto antes de escalar, así que las dimensiones de **Escala** se refieren ya al sujeto. Para conservar la transparencia, convierte a PNG, WebP, AVIF o TIFF. Se aplica después de las ediciones de cada imagen (zonas borradas, enderezado, recorte) y antes del escalado y el upscale. La red solo corre la primera vez para cada imagen y motor: cambiar el borde, el relleno o el formato reutiliza la máscara. **Cancelar** aborta al instante. Los modelos se descargan de Hugging Face fijados a un commit y se comprueba su SHA-256 antes de usarlos; quedan en una caché propia que [Configuración](#configuracion) mide y permite borrar. Como con Real-ESRGAN, **tus imágenes no salen del equipo**: lo único que viaja es la descarga del modelo. ### Ajustes de imagen (filtros) La celda **Ajustes** de la pestaña Imagen resume los filtros activos (por ejemplo «Brillo +20 · Saturación −100 · Nitidez +60», o «Ninguno»). Al pulsar la etiqueta o el resumen se abre el modal **Ajustes de imagen**, con cinco deslizadores: - **Brillo**, **Contraste** y **Saturación**, de −100 a 100 con 0 como neutro. Contraste −100 deja un gris plano; Saturación −100 convierte a escala de grises y +100 dobla la intensidad del color. - **Gamma**, de 0,20 a 3,00 con 1 como neutro: por encima de 1 aclara los medios tonos sin mover el negro ni el blanco (útil en fotos subexpuestas); por debajo, los oscurece. - **Nitidez**, de −100 a 100: los valores positivos realzan los bordes (máscara de enfoque) y los negativos desenfocan. Los filtros son **globales**: se aplican a todas las imágenes al convertir, después de las ediciones del visor y del redimensionado, y al tamaño final. No tocan las bandas del letterbox ni el fondo blanco del JPG. Con todo en neutro no hay ningún coste. El modal tiene una **vista previa** en vivo de la imagen de referencia (la abierta en el visor, o la primera seleccionada, o la primera de la cola), ya editada y redimensionada; mantenerla pulsada enseña el original. El **doble clic** en un deslizador lo devuelve a su valor neutro y **Restablecer** los devuelve todos. Los filtros no pasan el preset a Personalizado, se recuerdan entre sesiones, viajan en los presets de usuario y se restablecen, como el resto de la pestaña, con el clic en **Preset**. En imágenes muy grandes (unos 12 MP) la nitidez tarda alrededor de un segundo por imagen y el desenfoque unos dos; el resto de filtros es casi instantáneo. ### Peso estimado En la lista de salida, la fila de la imagen de referencia (la que ves en el visor, o la primera seleccionada, o la primera) muestra el **peso estimado** en lugar del «-»: `≈ 184 KB (−62 %)` y, debajo, `Peso estimado · 1600×1067`. Mientras recalcula, la cifra anterior se ve atenuada. En móvil, y cuando esa imagen ya está convertida o en cola, el dato aparece en una línea al final de la rejilla de la pestaña Imagen. Se recalcula al mover cualquier control de calidad, de escala o de filtros, sin necesidad de convertir. Para ello se codifica con el códec real una muestra de la imagen de referencia ya editada, redimensionada y filtrada (64 teselas de 64 px repartidas por toda la imagen) y se extrapola al tamaño final. Medido en fotos, capturas y texturas, el error medio ronda el 7 % y no suele pasar del 16 %; el tooltip recuerda el margen. Si la imagen cabe entera en la muestra (512×512 o menos) se codifica completa y el peso es exacto, sin «≈». La estimación tarda menos de un segundo en JPG, WEBP y PNG y unos dos en AVIF. No se calcula mientras hay una conversión en marcha. Con un [peso máximo](#peso-maximo) activo y una estimación que lo supera, la cifra lo indica (`≈ 1,2 MB → ≤ 500 KB`): es el punto de partida, y la conversión bajará hasta el tope. ### Peso maximo La celda **Peso máx.** de la pestaña Imagen fija un tope de peso para cada imagen convertida, como «≤ 500 KB» para una web. Muestra `Sin límite` o el tope activo; un clic en la etiqueta o en el valor abre su ventana: - **Limitar el peso de cada imagen** -- activa el tope (desactivado por defecto). - **Máximo** -- el valor y su unidad: **KB**, **MB** (en base 1024, como el resto de la aplicación) o **% del original**, que se calcula sobre el peso de cada fichero de entrada. - **Reducir las dimensiones si la calidad no basta** -- activado por defecto. Al convertir, cada imagen se codifica varias veces con el códec real buscando la calidad más alta que cabe: nunca por encima de la que tiene puesta el formato, y como mucho hasta 40 (hasta 5 si no se permite reducir las dimensiones). La búsqueda arranca de una estimación sobre la misma muestra de teselas del peso estimado, así que suele bastar con dos o tres codificaciones completas; da por bueno un resultado que quede a menos de un 5 % del tope. Si ni la calidad mínima cabe y está permitido, se reducen las dimensiones lo justo (en proporción a la raíz del exceso) y se vuelve a buscar la calidad. PNG y WebP sin pérdida no tienen calidad que bajar: solo se pueden reducir sus dimensiones. La fila de salida dice cómo quedó: `≤ 500 KB, calidad 62`, o `reducida` en los formatos sin pérdida; si además se redujo la escala, el porcentaje aparece junto a las dimensiones. Si no se alcanzó el tope (dimensiones no permitidas, o una imagen que ni a 16 px cabe), se entrega lo más ligero posible, la fila lo marca en ámbar (`⚠ > 500 KB`) y se avisa. El tope es un ajuste más de la pestaña: se recuerda entre sesiones y entra en los presets de usuario y en la configuración exportada. ### Comparar antes y después En el visor de una imagen **convertida**, el botón **Comparar** (o la tecla `C`) superpone el antes y el después con un **divisor** vertical: - **Antes** es el original con las ediciones y el redimensionado de la conversión, pero sin codificar y sin filtros; **después** es el archivo convertido. Los dos se dibujan a la misma escala. - El divisor se arrastra, o se mueve con `←` `→` (con `Mayús`, a paso fino), `Inicio` y `Fin`. - La rueda amplía alrededor del cursor, `1` pone el tamaño real, `0` ajusta a la ventana, `+` y `−` amplían y reducen, y el doble clic alterna. Ampliado, cada píxel se ve nítido, para juzgar los artefactos de compresión. Los dos lados se desplazan juntos. - Los rótulos dan el peso de cada lado y la reducción: «Antes · 2,1 MB» y «Después · 184 KB · −91 %». - **Calcular SSIM** mide el parecido estructural entre los dos lados sobre copias de 512 px y lo califica: indistinguible (≥ 0,995), buena (≥ 0,98), aceptable (≥ 0,95) o pérdida visible. Los tramos son exigentes porque el SSIM solo mira la luminancia: un WEBP a calidad 10 todavía da en torno a 0,98. Con filtros activos se compara contra la imagen ya filtrada, de modo que el índice refleja solo la compresión, y el rótulo lo indica. La comparación se mantiene al pasar de archivo con `RePág` y `AvPág` y se cierra con el visor. ### Controles por formato Cada formato muestra su propio panel de controles avanzados al seleccionarlo. El detalle exhaustivo de cada parametro esta en la seccion **Formatos**. Resumen rapido: - **WEBP:** Calidad, Metodo, Near-LL, Alpha, Filtro y modo Lossless. Encoder `libwebp`. - **AVIF:** Calidad, Velocidad, Denoise, Sharpness, Subsample y Alpha. Encoder `libavif`. - **JPG:** Calidad, Submuestreo, Smoothing, Tabla Q, Trellis y Escala de grises. Encoder `MozJPEG`. - **PNG:** Optimizacion (1-6), Colores y Entrelazado. Encoder `OxiPNG`; lossless salvo que se reduzcan los colores. - **ICO / Favicon:** Sin controles de codec. Genera un `.ico` multi-tamano (16, 32, 48, 64, 128 y 256) o, con **Pack de favicons**, un ZIP con `favicon.ico`, `apple-touch-icon.png`, `icon-192.png`, `icon-512.png` y `site.webmanifest`. - **TIFF:** Compresion (LZW, Deflate o sin comprimir) y Resolucion anotada. Codificador propio, siempre sin perdida. ### Presets de imagen #### Optimizado Equilibrio calidad/tamano pensado para uso web general. Punto de partida recomendado para la mayoria de imagenes. #### Max Calidad Prioriza la fidelidad visual sobre el tamano del archivo. Adecuado para imagenes que se van a visualizar en alta resolucion o que requieren minima degradacion. #### Min Peso Maximiza la reduccion de tamano con compresion agresiva. Ideal para miniaturas, imagenes de fondo o contextos con ancho de banda limitado donde el tamano es critico. #### Lossless Codificacion sin perdidas: reproduce los pixeles originales exactamente. En WEBP y PNG garantiza calidad perfecta; en AVIF y JPG se aproxima al maximo posible con sus encoders. #### -- Personalizado -- Se activa automaticamente al modificar cualquier control manualmente. Al volver a seleccionar un preset se restauran sus valores por defecto para el formato activo. --- ## Video ### Flujo de conversion de video 1. Selecciona la pestana **Video** en la parte superior de la columna derecha. 2. Elige **Preset**, **Formato** de salida (MP4, WebM, GIF animado o WebP animado) y los controles globales (**Resolucion**, **FPS**, **Audio**). 3. Ajusta los controles avanzados especificos del formato si lo necesitas (los detalles de cada uno estan en la seccion _Formatos_). 4. Pulsa **Convertir**. Puedes cancelar durante el proceso. 5. El motor FFmpeg.wasm (~25 MB) se sirve desde el propio sitio; la primera conversion de video lo descarga y las siguientes son inmediatas. 6. Tras convertir, el boton **Metadatos** de cada archivo de salida (MP4, WebM) permite etiquetar Titulo, Artista y Comentario; la etiqueta se aplica al descargar o compartir, sin re-codificar. ### Formatos de entrada admitidos Puedes cargar archivos de video en los siguientes formatos: `MP4 WebM MOV MKV AVI OGV`. En general FFmpeg.wasm puede demultiplexar la mayoria de contenedores comunes; los listados son los que se filtran explicitamente desde el selector y se reconocen al arrastrar. ### Controles globales de video - **Resolucion:** altura maxima de salida en pixeles. Mantiene la relacion de aspecto del original y actua como techo: un clip que ya sea mas pequeno no se reescala hacia arriba. _Original_ conserva la resolucion de entrada; opciones predefinidas: 1080p, 720p, 480p. - **FPS:** cuadros por segundo del video de salida. Reducir el FPS disminuye notablemente el peso. _Original_ mantiene la cadencia de la fuente; opciones predefinidas: 60, 30, 24, 15, 12. En GIF y WebP animado _Original_ no es un paso directo: ambos formatos guardan un retardo por frame (centesimas de segundo en GIF), asi que la cadencia real del clip se mide con `requestVideoFrameCallback` y se fija en el filtergraph. Asi un clip de cadencia variable --grabaciones de pantalla, camaras de movil-- no acaba con frames congelados de mas de un segundo al final del bucle. Si la medida falla, el GIF cae a 15 fps y el WebP conserva la cadencia del origen. - **Audio:** tratamiento de la pista de audio. Cuatro modos: - _Codificar audio 128k_ (por defecto): recodifica la pista a 128 kbps (AAC en MP4, Opus en WebM). - _Codificar audio 320k_: igual pero a 320 kbps, mayor calidad y peso. - _Eliminar Audio_: descarta la pista. Reduce peso y evita incompatibilidades. - _Mantener Audio_: copia la pista original sin recodificar (`-c:a copy`). Ahorra tiempo y preserva calidad, pero falla si el codec de origen no es compatible con el contenedor (MP4 admite AAC; WebM admite Opus/Vorbis). Para GIF y WebP animado el control queda deshabilitado: el audio se descarta siempre (GIF no admite audio). Al recodificar (128k o 320k), la pista recibe también los [ajustes de audio](#ajustes-de-audio) de la pestaña Audio: paso alto y bajo, ganancia y fundidos. La normalización no se aplica al audio de los vídeos. - **Filtros:** resumen de los filtros de vídeo activos; al pulsar la etiqueta o el resumen se abre su modal (ver [Filtros de vídeo](#filtros-de-vídeo)). ### Filtros de vídeo El modal **Filtros de vídeo** reúne ajustes globales, que se aplican a todos los vídeos al convertir, también en GIF y WebP animado: - **Brillo**, **Contraste**, **Saturación** y **Gamma**, con la misma escala que los [ajustes de imagen](#ajustes-de-imagen-filtros), así que un mismo valor da un resultado parecido en las dos pestañas. Se aplican con el filtro `eq` de FFmpeg. - **Ruido**: reducción de ruido (`hqdn3d`) en tres niveles, Suave, Media y Fuerte. Suaviza el grano de las grabaciones con poca luz y suele bajar el peso; con los niveles altos se pierde detalle fino. - **Desentrelazar** (`yadif`): quita las rayas horizontales de los vídeos entrelazados (TDT, videocámaras antiguas). _Automático_ solo trata los fotogramas que el archivo marca como entrelazados; _Siempre_ los trata todos, para archivos mal marcados. - **Estabilizar** (`deshake`): compensa el temblor de la cámara en mano. Es un estabilizador básico y hace la conversión bastante más lenta. Los bordes que quedan al descubierto se rellenan con la imagen reflejada. El orden en la cadena es: desentrelazar → FPS → rotación y volteo → estabilizar → ruido → color → escala. En el GIF, la paleta se calcula ya con los colores filtrados. La **vista previa** del modal muestra un fotograma del vídeo de referencia (el abierto en el visor, o el primero seleccionado, o el primero de la cola), tomado del centro del tramo recortado, con los ajustes de color aplicados. Es aproximada, porque `eq` trabaja sobre la luminancia; el ruido, el desentrelazado y la estabilización no se previsualizan. Mantenerla pulsada enseña el original. Como en imagen, el doble clic en un deslizador lo devuelve al neutro, **Restablecer** los devuelve todos y el clic en **Preset** también los restablece. ### Controles por formato Cada formato muestra su propio panel de controles avanzados al seleccionarlo. El detalle exhaustivo de cada parametro esta en la seccion **Formatos**. Resumen rapido: - **MP4 (H.264):** Calidad (mapeada a CRF 18-28), Velocidad del encoder (ultrafast -> slow) y Perfil (Baseline / Main / High). Codificacion con x264 via FFmpeg. - **WebM (VP9):** Calidad (mapeada a CRF 15-35), CPU used (esfuerzo del encoder) y modo Lossless. Codificacion con libvpx-vp9 via FFmpeg. - **GIF animado:** Colores (paleta max. 256) y Dithering (Bayer / Floyd-Steinberg / Ninguno). El audio se descarta siempre. - **WebP animado:** Calidad, Metodo (esfuerzo del encoder) y modo Lossless. ### Unir vídeos (+) El botón **+** junto a **Convertir** une los vídeos seleccionados en uno solo, en el orden de la cola (arrastra las filas para cambiarlo). El resultado entra como una fila nueva en Generados, sin marcar, y los originales no se tocan. **Convertir** sigue convirtiendo cada vídeo por separado. - **Sin recomprimir** cuando es posible: si todos los clips comparten códec, tamaño, cadencia y formato de píxel (y el audio, si se conserva), el códec es válido para el formato de salida (H.264 en MP4 y MKV; VP9 o VP8 en WebM), no hay recortes, giros ni [filtros](#filtros-de-vídeo), y **Resolución** y **FPS** están en _Original_, se unen con el demuxer concat de FFmpeg: es rápido y no pierde calidad. El aviso final lo indica. - **Recomprimiendo** en cualquier otro caso: cada clip se encaja en el tamaño del primero (ya girado, y con **Resolución** como techo), con bandas si su aspecto es otro, a los FPS elegidos o los del primero, y se codifica con los ajustes de la pestaña. Se respetan el recorte, el giro y el volteo de cada clip; los filtros de vídeo y los [ajustes de audio](#ajustes-de-audio) se aplican al conjunto. Un clip sin pista de audio pone silencio de su duración; con _Eliminar_ la salida no lleva audio y con _Mantener_ el audio se recodifica (no se pueden copiar varias pistas distintas). - Formatos: MP4, WebM y MKV. GIF y WebP animado no se pueden unir (el botón se apaga y su tooltip lo explica). - El botón necesita al menos dos vídeos seleccionados. Antes de empezar se avisa si la suma de los clips puede agotar la memoria, y **Cancelar** detiene la unión. ### Presets de video #### Optimizado Equilibrio calidad/tamano pensado para uso web general. En MP4 y WebM mantiene resolucion y FPS originales con calidad media-alta; en GIF baja a 480p/15 fps y en WebP animado a 720p, que es lo que hace utilizables esos dos formatos. Punto de partida recomendado para la mayoria de videos. #### Max Calidad Prioriza la fidelidad visual sobre el tamano del archivo. En MP4 y WebM mantiene resolucion y FPS originales, aumenta la calidad del encoder al maximo (encoder mas lento, archivos mas grandes) y mantiene el audio original sin recodificar (`-c:a copy`). Adecuado para masters, archivado o reproduccion en pantalla grande. En GIF y WebP animado ningun preset mantiene la resolucion original, porque son formatos de entrega y no de archivo: el techo es 720p en GIF y 1080p en WebP. Un GIF de 8 s a 1080p pasa de los 50 MB y agota la memoria del motor; a 720p se queda en unos pocos. El audio no aplica en ninguno de los dos. #### Min Peso Maximiza la reduccion de tamano con compresion agresiva. Reduce a 720p y 30 FPS para minimizar el peso. Ideal para previsualizacion rapida, envio por mensajeria o contextos con ancho de banda limitado. #### Sin Audio (Redes) Configuracion optimizada para redes sociales: elimina el audio, reduce a 720p y 30 FPS, y aplica compresion equilibrada. Adecuado para clips destinados a Instagram, TikTok, X y similares, donde el audio se reemplaza o se reproduce silenciado. #### Lossless (solo WebM) Disponible mediante la casilla **Lossless** en WebM (VP9) y en WebP animado: codificacion sin perdidas que reproduce los pixeles exactamente. Genera archivos mucho mas grandes que el modo lossy. MP4 y GIF no ofrecen modo lossless dedicado (el GIF siempre cuantiza a paleta). #### -- Personalizado -- Se activa automaticamente al modificar cualquier control manualmente. Al volver a seleccionar un preset se restauran sus valores por defecto para el formato activo. --- ## Audio ### Flujo de conversion de audio 1. Selecciona la pestana **Audio** en la parte superior de la columna derecha. 2. Elige **Preset**, **Formato** de salida (MP3, AAC/M4A, Opus, WebM/Opus, OGG Vorbis, FLAC o WAV) y los controles globales (**Sample rate**, **Canales**, **Normalizar volumen**). 3. Ajusta los controles avanzados especificos del formato si lo necesitas (los detalles de cada uno estan en la seccion _Formatos_). 4. Pulsa **Convertir**. Puedes cancelar durante el proceso. 5. La conversion se realiza con FFmpeg.wasm: si aun no se ha cargado, se descarga la primera vez (~30 MB) y queda en cache para usos posteriores. 6. Tras convertir, el boton **Metadatos** de cada archivo de salida permite etiquetar Titulo, Artista y Comentario (y Album en MP3, FLAC, OGG, Opus y WAV); la etiqueta se aplica al descargar o compartir, sin re-codificar. ### Formatos de entrada admitidos Puedes cargar archivos de audio en los siguientes formatos: `MP3 WAV AAC M4A OGG Opus FLAC`. Tambien se acepta extraer audio desde archivos de video cargados en la cola seleccionando la pestana Audio antes de convertir. ### Controles globales de audio - **S. rate:** frecuencia de muestreo de salida en Hz. _Original_ conserva la del archivo de entrada. Para voz suelen bastar 16 000-22 050 Hz; para musica, 44 100 o 48 000 Hz. - **Canales:** _Original_ conserva los del archivo, _Estereo_ fuerza dos canales y _Mono_ reduce a uno (aproximadamente la mitad de peso en formatos con perdidas). - **Normalizar volumen:** aplica el filtro `loudnorm` (EBU R128, target `I=-16 LUFS, TP=-1.5, LRA=11`). Util para emparejar niveles entre archivos; incrementa el tiempo de codificacion. - **Ajustes:** resumen de los ajustes de audio activos; al pulsar la etiqueta o el resumen se abre su modal (ver [Ajustes de audio](#ajustes-de-audio)). ### Ajustes de audio El modal **Ajustes de audio** reúne ajustes globales que se aplican a todos los audios al convertir: - **Paso alto**: elimina lo que queda por debajo de la frecuencia elegida (40, 80, 120 o 200 Hz). Quita zumbidos, golpes de micrófono y ruido de viento; 80 Hz es el valor habitual para voz. - **Paso bajo**: elimina lo que queda por encima (16, 12, 8 o 4 kHz). Suaviza el siseo y los agudos estridentes; 4 kHz da un sonido de teléfono. - **Ganancia**: de −20 a +20 dB en medios decibelios. +6 dB es aproximadamente el doble de amplitud; subir mucho puede saturar. Doble clic la devuelve a 0. - **Fundido de entrada** y **Fundido de salida**: duración en segundos (hasta 30) del fundido desde el silencio al principio y hacia el silencio al final. Se cuentan sobre el tramo [recortado](#recorte-trim), y nunca pasan de la duración del clip. El orden en la cadena es: paso alto → paso bajo → ganancia → fundidos → normalización. Con **Normalizar volumen** activo la ganancia apenas cambia el resultado, porque la normalización lleva el volumen al nivel estándar; el modal lo avisa. Los ajustes se aplican también a la pista de los **vídeos** cuando se recodifica (modo _Codificar 128k/320k_ de la pestaña Vídeo). Con _Mantener_ la pista se copia tal cual y con _Eliminar_ no hay pista, así que en esos casos no se aplican. Cambiar los ajustes de audio vuelve a encender **Convertir** también en la pestaña Vídeo. ### Recorte (trim) Al pasar el cursor sobre un archivo de audio en la columna izquierda aparece una barra de reproduccion y dos manejadores para fijar el **inicio** y el **fin** del recorte. La conversion generara solo el fragmento seleccionado. Los campos de tiempo aceptan formato `mm:ss.ms`; el boton de reinicio elimina el recorte y vuelve al clip completo. En el visor, `Espacio` reproduce o pausa, ✓ cierra guardando el recorte y ✕ (o `Esc`) lo deja como estaba al abrir. ### Unir y mezclar audios (+) El botón **+** junto a **Convertir** junta los audios seleccionados en uno solo, en el orden de la cola, con el formato y los ajustes de la pestaña. El resultado entra como una fila nueva en Generados, sin marcar. También vale para el audio de los vídeos de la cola; un vídeo sin pista de audio se deja fuera con un aviso. Lo que hace depende de **Unir (+)**: - **En secuencia:** uno detrás de otro, respetando el recorte de cada uno. Si todos tienen la misma codificación que la salida (mismo códec, frecuencia y canales), sin recortes, ajustes ni normalización, se unen sin recomprimir. - **Mezclar:** todos a la vez en una sola pista (filtro `amix`). **Duración** elige si la mezcla dura lo que el más largo, el más corto o el primero de la cola; **Niveles** fija el peso de cada audio en el orden de la cola, separados por espacios (`1 0,5` deja el segundo a la mitad; vacío, todos igual; los que faltan valen 1). Como `amix` reparte el volumen entre las pistas, **Normalizar volumen** ayuda a recuperar el nivel. La frecuencia y los canales de la salida son los de **S. rate** y **Canales**, o los del primer audio con _Original_. Los [ajustes de audio](#ajustes-de-audio) y la normalización se aplican al resultado (el fundido de salida, al final del conjunto). ### Presets de audio #### Optimizado Equilibrio calidad/tamano pensado para uso general. Punto de partida recomendado para la mayoria de archivos. Mantiene el formato actual y aplica valores intermedios (p. ej. MP3 VBR V4, AAC 128 kbps, Opus 96 kbps, OGG q5, FLAC nivel 5, WAV 16-bit). #### Max Calidad Prioriza la fidelidad sobre el tamano. Mantiene el formato actual y sube los parametros al maximo razonable (MP3 VBR V0 ~245 kbps, AAC 256 kbps, Opus 192 kbps, OGG q8, FLAC compresion 12, WAV 24-bit). #### Min Peso Maximiza la reduccion de tamano con compresion agresiva. Si el formato actual es `MP3`, `AAC` u `OGG` mantiene el formato pero baja el bitrate; en cualquier otro formato lossy mantiene la eleccion, y desde formatos lossless (FLAC/WAV) **cambia automaticamente a Opus 48 kbps** por su superior eficiencia a bitrates bajos. #### Lossless Codificacion sin perdidas. Si el formato actual no es ya FLAC o WAV, **cambia automaticamente a FLAC** (compresion 8). Reproduce los samples de entrada sin perdida, a costa de archivos significativamente mayores que cualquier formato lossy. #### Roland SP-404 MK2 Configuracion para sampler Roland SP-404 MK2: fuerza salida **WAV 48 kHz, 16-bit PCM** y conserva los canales originales. Limite del hardware: 16 minutos por sample (no se aplica en codificacion; queda como aviso). #### Roland TR-8S Configuracion para caja de ritmos Roland TR-8S: fuerza salida **WAV 44,1 kHz, 16-bit PCM, mono**. Limite del hardware: 600 ms por sample y 256 MB en total (no se aplica en codificacion; queda como aviso). #### Polyend Play Configuracion para groovebox Polyend Play: fuerza salida **WAV 44,1 kHz, 16-bit PCM, mono**. Limite del hardware: 32 MB por sample (no se aplica en codificacion; queda como aviso). #### -- Personalizado -- Se activa automaticamente al modificar cualquier control manualmente. Al volver a seleccionar un preset se restauran sus valores por defecto para el formato activo. --- ## Datos ### Flujo de transformacion de datos 1. Selecciona la pestana **Datos** en la parte superior de la columna derecha. 2. Elige la **Operacion** deseada. El desplegable agrupa las operaciones por intencion: **Texto** (HTML<->MD, HTML->texto), **Documentos** (DOCX y OCR de imagenes), **Estructurado** (JSON<->CSV, JSON<->YAML, XML<->JSON, hojas de calculo<->CSV/JSON) y **Codigo** (Beautify, Minify). 3. Ajusta los controles especificos de la operacion si lo necesitas. 4. Pulsa **Convertir**. El resultado se genera instantaneamente en el navegador. ### Formatos de entrada admitidos - **HTML / Markdown:** `.html .htm .md .markdown` - **JSON / CSV:** `.json .csv .tsv` - **YAML:** `.yaml .yml` - **XML:** `.xml` - **Hojas de calculo:** `.xlsx .xls .ods` (procesadas con SheetJS) - **DOCX:** `.docx` (procesado con Mammoth.js) - **Beautify / Minify:** `.html .htm .css .js .mjs .json` - **Imagen → Texto (OCR):** las imagenes de la cola (`.png .jpg .webp .avif .gif .bmp .heic`) ### Operaciones disponibles #### HTML -> Markdown Convierte documentos HTML a Markdown usando **Turndown** (v7.2.0) + plugin GFM. Los controles disponibles son: - **Encabezados:** estilo ATX (#) o Setext (===). - **Lista:** marcador de listas no ordenadas (-, *, +). - **Bloque cod.:** cercado (```) o indentado. - **Cursiva:** delimitador de enfasis (_ o *). - **GFM:** activa GitHub Flavored Markdown (tablas, tachado, listas de tareas). #### Markdown -> HTML Convierte Markdown a HTML usando **Marked** (v12.0.2). Los controles disponibles son: - **GFM:** activa GitHub Flavored Markdown. - **Saltos `
`:** convierte saltos de linea simples en `
`. - **Sanitize:** sanitiza el HTML con DOMPurify para evitar inyeccion de scripts. - **Doc. completo:** envuelve la salida en un documento HTML completo con CSS basico embebido. #### HTML -> Texto Extrae el texto plano de un HTML (con el `DOMParser` del navegador, que no ejecuta scripts ni carga recursos). Sale un `.txt` con los párrafos y encabezados separados por una línea en blanco; se descartan `