在 Python 中将 PowerPoint 演示文稿转换为 HTML
概述
Aspose.Slides for Python via .NET 可以在没有 Microsoft PowerPoint 的情况下将 PowerPoint 演示文稿保存为 HTML。基本的转换只需加载一个 Presentation 并使用 SaveFormat 调用 save。当需要控制导出布局、字体、图像、备注、批注、SVG 输出或链接资源时,请使用 HtmlOptions。
本指南侧重于实用的 HTML 导出场景:
- 导出整个演示文稿或选定的幻灯片。
- 生成固定布局、响应式或基于 SVG 的 HTML。
- 包含演讲者备注和批注。
- 控制图像质量和裁剪图像数据。
- 嵌入字体或单独保存字体文件。
- 选择外部资源和媒体文件的写入方式和引用方式。
默认情况下,HTML 导出会生成一个自包含的 HTML 文档,绝大多数资源都嵌入其中。这对于共享单个文件很方便,但会增加输出大小。对于 Web 发布,请考虑使用外部资源、降低图像 DPI,并仅嵌入目标环境中不可靠可用的字体。
将演示文稿转换为 HTML
要将演示文稿导出为 HTML,请使用 Presentation 加载,然后使用 SaveFormat 保存。
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
presentation.save("presentation.html", slides.export.SaveFormat.HTML)
此示例会写入一个 HTML 文件。with 语句在导出后会释放演示文稿对象并关闭文件句柄和渲染资源。
使用 HtmlOptions
HtmlOptions 是 HTML 导出的主要配置类。常用设置包括:
slides_layout_options:添加备注、批注、讲义或其他布局信息。html_formatter:更改 HTML 文档结构或将格式化委托给控制器。slide_image_format:更改幻灯片的表示方式,例如作为 SVG。pictures_compression:控制图像 DPI 和输出大小。delete_pictures_cropped_areas:保留或删除裁剪的图像数据。svg_responsive_layout:使导出的 SVG 内容适应其容器。show_hidden_slides:在需要时包含隐藏的幻灯片。
以下章节分别展示最常用的选项,以便您仅组合工作流所需的部分。
将选定幻灯片转换为 HTML
接受幻灯片编号的 save 重载使用基于 1 的幻灯片位置。下面的循环将每张幻灯片保存为单独的 HTML 文件。
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
slide_count = len(presentation.slides)
for slide_index in range(slide_count):
slide_number = slide_index + 1
slide_numbers = [slide_number]
html_file_name = "slide-{}.html".format(slide_number)
presentation.save(html_file_name, slide_numbers, slides.export.SaveFormat.HTML)
当网站或应用程序需要每张幻灯片对应一个 HTML 页面时,请使用此模式。如果每张幻灯片应使用相同的布局,请创建一个 HtmlOptions 实例并将其传递给每个 save 调用。
创建响应式 HTML
ResponsiveHtmlController 通过 HtmlFormatter 提供响应式 HTML 输出。当导出页面需要更好地适应浏览器宽度时,请使用它。
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
controller = slides.export.ResponsiveHtmlController()
formatter = slides.export.HtmlFormatter.create_custom_formatter(controller)
html_options = slides.export.HtmlOptions()
html_options.html_formatter = formatter
presentation.save("presentation-responsive.html", slides.export.SaveFormat.HTML, html_options)
对于基于 SVG 的响应式布局,请在 HtmlOptions 上设置 svg_responsive_layout。当幻灯片内容以可缩放的 SVG 标记导出时,这非常有用。
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
html_options = slides.export.HtmlOptions()
html_options.svg_responsive_layout = True
presentation.save("presentation-svg-responsive.html", slides.export.SaveFormat.HTML, html_options)
包含演讲者备注和批注
通过 html_options.slides_layout_options 使用 NotesCommentsLayoutingOptions 可以包含演讲者备注或批注。默认情况下,备注和批注是隐藏的,除非您指定它们的位置。
假设源演示文稿包含演讲者备注:

下面的代码将幻灯片内容导出,并在幻灯片下方显示演讲者备注。
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
layout_options = slides.export.NotesCommentsLayoutingOptions()
layout_options.notes_position = slides.export.NotesPositions.BOTTOM_FULL
html_options = slides.export.HtmlOptions()
html_options.slides_layout_options = layout_options
presentation.save("presentation-with-notes.html", slides.export.SaveFormat.HTML, html_options)
导出的 HTML 包含备注区域:

要导出批注,请设置 comments_position,例如 CommentsPositions.RIGHT 或 CommentsPositions.BOTTOM。如果只需要批注,请省略 notes_position。如果需要同时显示备注和批注,请同时设置两个属性。
控制图像质量和裁剪区域
HTML 导出可以压缩幻灯片图像以减小输出大小。当需要更高图像质量时,请将 pictures_compression 设置为 PicturesCompression 中的某个值。
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
html_options = slides.export.HtmlOptions()
html_options.pictures_compression = slides.export.PicturesCompression.DPI150
presentation.save("presentation-dpi-150.html", slides.export.SaveFormat.HTML, html_options)
默认情况下,图像的裁剪区域可能会从导出输出中移除。仅在用户必须能够恢复或检查这些隐藏图像部分时才保留裁剪数据。保留裁剪数据会增加 HTML 大小。
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
html_options = slides.export.HtmlOptions()
html_options.delete_pictures_cropped_areas = False
presentation.save("presentation-with-cropped-areas.html", slides.export.SaveFormat.HTML, html_options)
添加 CSS
对于简单的样式,向 HtmlFormatter 传递 CSS 字符串。这样可以更改外围 HTML 文档,而 Aspose.Slides 仍然负责渲染幻灯片内容。
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
css_rules = "body { margin: 0; background: #f7f7f7; } .slide { margin: 24px auto; }"
formatter = slides.export.HtmlFormatter.create_document_formatter(css_rules, True)
html_options = slides.export.HtmlOptions()
html_options.html_formatter = formatter
presentation.save("presentation-styled.html", slides.export.SaveFormat.HTML, html_options)
要自定义文档头、链接的 CSS 文件或在幻灯片和形状周围添加自定义标记,请使用自定义格式化控制器,并通过 create_custom_formatter 将其传递给 HtmlFormatter。
嵌入字体
如果目标环境可能未安装演示文稿使用的字体,请使用 EmbedAllFontsHtmlController 在 HTML 中嵌入字体。嵌入可以提升视觉保真度,但会增加输出大小。
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
font_names_to_exclude = ["Arial"]
font_controller = slides.export.EmbedAllFontsHtmlController(font_names_to_exclude)
formatter = slides.export.HtmlFormatter.create_custom_formatter(font_controller)
html_options = slides.export.HtmlOptions()
html_options.html_formatter = formatter
presentation.save("presentation-embedded-fonts.html", slides.export.SaveFormat.HTML, html_options)
仅在确信目标浏览器或系统已经提供该字体时才排除它。对于品牌字体或不常见的字体,嵌入通常更安全。
链接字体文件而不是嵌入
为减小 HTML 文件大小,您可以将字体数据