在 Python 中使用外部链接图像将演示文稿导出为 HTML

背景

默认情况下,HTML 导出会使用 Base64 编码将所有资源直接嵌入到 HTML 中。这会生成一个单一的、独立的 HTML 文件,便于查看和分发。然而,这种方式有以下缺点:

  • 由于 Base64 编码的开销,生成的文件比原始资源大得多。
  • 嵌入的图像和其他资产难以更新或替换。

替代方法

使用 ILinkEmbedController 的替代方法可避免这些限制。

LinkController 类如下实现了 ILinkEmbedController,并作为参数传递给 HtmlOptions 构造函数。该类公开了三个方法,用于控制在 HTML 导出期间资源是嵌入还是链接:

get_object_storing_location(id, entity_data, semantic_name, content_type, recommended_extension): 在导出程序遇到资源并必须决定存储位置时调用。最重要的参数是 id(此导出运行中资源的唯一标识)和 content_type(资源的 MIME 类型)。返回 LinkEmbedDecision.LINK 以链接资源,或返回 LinkEmbedDecision.EMBED 以嵌入资源。

get_url(id, referrer): 返回将在生成的HTML中显示的、由 id 标识的资源的URL(可选地考虑引用对象)。

save_external(id, entity_data): 当选中链接的资源需要外部写入时调用。由于标识符和内容已提供(作为字节数组),您可以以任何方式持久化该资源。

下面是 Python LinkControllerILinkEmbedController 的实现。

# [TODO[not_supported_yet]: python 实现 .NET 接口]

实现 LinkController 类后,您可以将其与 HtmlOptions 类一起使用,以将演示文稿导出为带有外部链接图像的HTML,如下所示:

# [TODO[not_supported_yet]: python 实现 .NET 接口]

我们将 SlideImageFormat.SVG 赋给 slide_image_format 属性,以便生成的 HTML 文件包含用于渲染演示文稿内容的 SVG 数据。

内容类型:如果演示文稿包含光栅位图,则类代码必须能够处理 image/jpegimage/png 两种内容类型。导出的位图图像的内容可能与演示文稿中存储的内容不一致。Aspose.Slides 的内部算法会进行大小优化,并使用 JPEG 或 PNG 编解码器(取决于哪种能产生更小的文件尺寸)。包含 alpha 通道(透明度)的图像始终编码为 PNG。