Exportar presentaciones a HTML con imágenes vinculadas externamente en Python

Antecedentes

Por defecto, la exportación a HTML incrusta todos los recursos directamente en el HTML usando codificación Base64. Esto produce un único archivo HTML autocontenible que resulta cómodo para visualizar y distribuir. Sin embargo, este enfoque tiene inconvenientes:

  • El archivo resultante es significativamente más grande que los recursos originales debido al sobrecoste de Base64.
  • Las imágenes incrustadas y otros activos son difíciles de actualizar o reemplazar.

Enfoque alternativo

Un enfoque alternativo usando ILinkEmbedController elimina estas limitaciones.

La clase LinkController que se muestra a continuación implementa ILinkEmbedController y se pasa al constructor de HtmlOptions. La clase expone tres métodos que controlan cómo se incrustan o enlazan los recursos durante la exportación a HTML:

get_object_storing_location(id, entity_data, semantic_name, content_type, recommended_extension): Se llama cuando el exportador encuentra un recurso y debe decidir dónde almacenarlo. Los parámetros más importantes son id (el identificador único del recurso para esta ejecución de exportación) y content_type (el tipo MIME del recurso). Devuelve LinkEmbedDecision.LINK para enlazar el recurso, o LinkEmbedDecision.EMBED para incrustarlo.

get_url(id, referrer): Devuelve la URL que aparecerá en el HTML resultante para el recurso identificado por id (opcionalmente considerando el objeto referenciador).

save_external(id, entity_data): Se llama cuando un recurso seleccionado para enlazarse necesita escribirse externamente. Como se proporcionan el identificador y el contenido (como matriz de bytes), puede persistir el recurso como desee.

A continuación se muestra la implementación en Python del LinkController de ILinkEmbedController.

# [TODO[not_supported_yet]: implementación en Python de interfaces .NET]

Después de implementar la clase LinkController, puede utilizarla con la clase HtmlOptions para exportar la presentación a HTML con imágenes enlazadas externamente, como se muestra a continuación:

# [TODO[not_supported_yet]: implementación en Python de interfaces .NET]

Asignamos SlideImageFormat.SVG a la propiedad slide_image_format para que el archivo HTML resultante contenga datos SVG que representen el contenido de la presentación.

Tipos de contenido: Si la presentación contiene mapas de bits rasterizados, entonces el código de la clase debe estar preparado para procesar tanto los tipos de contenido image/jpeg como image/png. El contenido de los mapas de bits exportados puede no coincidir con lo que estaba almacenado en la presentación. Los algoritmos internos de Aspose.Slides realizan optimización de tamaño y utilizan el códec JPEG o PNG (según cuál produzca un archivo más pequeño). Las imágenes que contienen un canal alfa (transparencia) siempre se codifican como PNG.