Python で PowerPoint プレゼンテーションを Markdown に変換する

概要

Aspose.Slides for Python via .NET は、ドキュメント作成、静的サイト、コンテンツ移行、バージョン管理のワークフロー向けに、PPT および PPTX プレゼンテーションを Markdown に変換できます。Markdown のフレーバーを選択したり、スライドコンテンツのレンダリング方法を制御したり、エクスポートされた画像の保存場所や生成された Markdown が画像を参照する方法を決定したりできます。

既定では、Markdown エクスポートはテキストのみの出力になります。ビジュアルコンテンツをエクスポートするには、MarkdownSaveOptions.export_type プロパティを MarkdownExportType 列挙体の SEQUENTIAL または VISUAL のいずれかに設定します。SEQUENTIAL はスライド項目を個別かつ順番通りにレンダリングし、VISUAL はグループ化された項目をまとめて保持し、視覚的な関係を保ちます。TEXT_ONLY の値は画像リソースを出力しません。

プレゼンテーションを Markdown に変換する

ソースファイルを Presentation クラスで読み込み、次に Presentation.save メソッドを呼び出し、SaveFormat 列挙体の MD 値を指定します。

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 クラスは、ローカルに保存される画像のための2つのプロパティを提供します:

  • 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 は画像サブディレクトリを作成しますが、アプリケーションは Markdown ファイルを保存する前に base_path を作成する必要があります。

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 エクスポート中に保持されますか?

はい。テキストの ハイパーリンク は標準的な Markdown リンクとして保持されます。スライドの トランジション や アニメーション は変換されません。

プレゼンテーションを並列に Markdown に変換できますか?

異なるプレゼンテーション ファイルを並列に処理することは可能ですが、スレッド間で同じ Presentation インスタンスを共有しないでください。multithreading guidelines に従い、各ファイルごとに別々のインスタンスを使用してください。