Конвертировать презентации PowerPoint в Markdown с помощью Python

Обзор

Aspose.Slides for Python via .NET может конвертировать презентации PPT и PPTX в Markdown для документации, статических сайтов, миграции контента и рабочих процессов контроля версий. Вы можете выбрать вариант Markdown, управлять тем, как отображается содержимое слайдов, и решить, где хранить экспортированные изображения и как сгенерированный Markdown будет ссылаться на них.

По умолчанию экспорт в Markdown использует только текстовый вывод. Чтобы экспортировать визуальное содержимое, установите свойство MarkdownSaveOptions.export_type в значение SEQUENTIAL или VISUAL из перечисления MarkdownExportType. SEQUENTIAL рендерит элементы слайда отдельно и по порядку, тогда как VISUAL сохраняет сгруппированные элементы вместе, чтобы сохранить их визуальное отношение. Значение TEXT_ONLY не создает ресурсы изображений.

Преобразовать презентацию в Markdown

Загрузите исходный файл с помощью класса Presentation, а затем вызовите метод Presentation.save с значением MD из перечисления SaveFormat.

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    presentation.save("presentation.md", slides.export.SaveFormat.MD)

Выбрать вариант Markdown

Свойство MarkdownSaveOptions.flavor контролирует спецификацию Markdown, используемую для вывода. Перечисление Flavor включает CommonMark, GitHub Flavored Markdown и другие поддерживаемые варианты.

Следующий пример экспортирует презентацию как CommonMark:

import aspose.slides as slides

options = slides.export.MarkdownSaveOptions()
options.flavor = slides.export.Flavor.COMMON_MARK

with slides.Presentation("presentation.pptx") as presentation:
    presentation.save("presentation.md", slides.export.SaveFormat.MD, options)

Экспорт изображений с использованием поведения сохранения по умолчанию

Класс MarkdownSaveOptions предоставляет два свойства для локально сохраняемых изображений:

  • base_path указывает базовый каталог для документа Markdown и его ресурсов.
  • images_save_folder_name указывает подпапку изображений. Значение по умолчанию Images.

Следующий пример рендерит визуальное содержимое, записывает изображения в output/assets и создаёт относительные ссылки на изображения в документе Markdown:

import os
import aspose.slides as slides

output_directory = "output"
os.makedirs(output_directory, exist_ok=True)

options = slides.export.MarkdownSaveOptions()
options.export_type = slides.export.MarkdownExportType.VISUAL
options.base_path = output_directory
options.images_save_folder_name = "assets"

markdown_path = os.path.join(output_directory, "presentation.md")

with slides.Presentation("presentation.pptx") as presentation:
    presentation.save(markdown_path, slides.export.SaveFormat.MD, options)

Aspose.Slides создаёт подпапку изображений, когда экспорт создаёт ресурсы изображений, но приложение должно создать base_path перед сохранением файла Markdown.

Подготовить Markdown и изображения к публикации

Aspose.Slides for Python via .NET не предоставляет .NET обратные вызовы сохранения изображений для замены каждой сгенерированной ссылки на изображение во время экспорта. Вместо этого экспортируйте документ Markdown и его папку с изображениями в каталог публикации, а затем публикуйте этот каталог, не меняя его относительную структуру.

Следующий пример готовит cdn-origin/presentations/quarterly-report как смонтированный или синхронизированный каталог публикации. Сам пример не выполняет сетевую загрузку: сгенерированные ссылки станут действительными после публикации каталога в целевом сайте или CDN.

import os
import aspose.slides as slides

publication_directory = os.path.join(
    "cdn-origin",
    "presentations",
    "quarterly-report")
os.makedirs(publication_directory, exist_ok=True)

options = slides.export.MarkdownSaveOptions()
options.export_type = slides.export.MarkdownExportType.VISUAL
options.base_path = publication_directory
options.images_save_folder_name = "assets"

markdown_path = os.path.join(publication_directory, "presentation.md")

with slides.Presentation("presentation.pptx") as presentation:
    presentation.save(markdown_path, slides.export.SaveFormat.MD, options)

Опубликуйте presentation.md вместе с каталогом assets. Документ Markdown использует относительные ссылки на изображения, поэтому оба элемента должны сохранять одинаковое отношение в месте назначения. Если система публикации требует абсолютных внешних URL, преобразуйте сгенерированные ссылки в отдельном постобработочном этапе после публикации всех файлов изображений.

FAQ

Можно ли с помощью обратных вызовов Python настроить отдельные файлы изображений и ссылки при экспорте в Markdown?

Нет. Aspose.Slides for Python via .NET не предоставляет .NET ImageSaving и SvgImageSaving обратные вызовы. Настройте локальный вывод с помощью MarkdownSaveOptions.base_path и MarkdownSaveOptions.images_save_folder_name, затем публикуйте или постобрабатывайте сгенерированные ресурсы.

Где сохраняются экспортированные изображения?

Расположение изображения контролируется MarkdownSaveOptions.base_path и MarkdownSaveOptions.images_save_folder_name. Документ Markdown ссылается на эти изображения через относительные пути.

Какой разделитель пути следует использовать в ссылках на изображения?

Используйте прямые слеши в ссылках Markdown и URL. os.path.join используйте только для путей файловой системы и нормализуйте любые ссылки, созданные во время постобработки, отдельно.

Сохраняются ли гиперссылки при экспорте в Markdown?

Да. Текстовые hyperlinks сохраняются как стандартные ссылки Markdown. Переходы слайдов transitions и animations не конвертируются.

Можно ли преобразовывать несколько презентаций в Markdown параллельно?

Вы можете обрабатывать разные файлы презентаций параллельно, но не разделяйте один экземпляр Presentation между потоками. Следуйте multithreading guidelines и используйте отдельный экземпляр для каждого файла.