Volver a la wiki

Import Visio: masters con arte EMF incrustado (Cisco) → PNG renderizable

Descripción

Regresión del import Visio detectada en PROD el 2026-07-13: los stencils de Cisco (Catalyst 9000) no se renderizan tras la importación. La causa: Cisco no dibuja sus masters con geometría Visio, sino que incrusta el arte en un formato bitmap nativo de Windows (EMF — Enhanced Metafile). libvisio-ng lo envuelve tal cual en un <image href="data:image/emf;base64,...">, que ningún navegador web renderiza.

Impacto observado

Solución (v1.54.1)

Detección (svg_is_emf_only())

Antes de procesar cada SVG generado por libvisio-ng, se detecta:

Un SVG es “solo-EMF” si cumple ambas condiciones. Los SVGs con geometría real (Eaton) no son detectados y continúan sin cambios.

Conversión (convert_emf_only_svgs())

  1. Extracción de EMF: Los datos base64 se decodifican en ficheros .emf temporales.
  2. Lote 1 (EMF → SVG vectorial):
    LibreOffice en modo headless convierte TODOS los EMF en una sola invocación (el arranque de LO es el coste; por fichero sería minutos). Resultado: SVGs vectoriales de mejor calidad.
  3. Rasterizado (SVG → PNG):
    rsvg-convert a 2400 px de ancho (nítido en el modal).
  4. Lote 2 (EMF → PNG directo, fallback):
    Si rsvg falló, LibreOffice convierte directamente EMF→PNG (menor calidad, pero visible).
  5. Postproceso Pillow (_postprocess_stencil_png()):
    • Blanco → transparente (ImageChops, en C).
    • Autocrop por alpha.
    • Escalado mínimo (800 px) si cabe.

Desaprobación

Cambios de configuración

QA

Verificación visual

Limitaciones

Véase también

Subir