Pythonでプレゼンテーションを作成する方法

Pythonでプレゼンテーションを作成する方法

Aspose.Slides FOSS for Python を使用すると、Microsoft Office に依存せずに、完全に Python だけで PowerPoint プレゼンテーションを作成できます。このガイドでは、新しいプレゼンテーションの作成、スライドとシェイプの追加、テキストの書式設定、そして結果の保存方法を示します。

ステップバイステップ ガイド

ステップ 1: パッケージをインストール

PyPI から Aspose.Slides FOSS をインストールします。Python 3.10 以降が必要です。

pip install aspose-slides-foss

インストールを確認する:

import aspose.slides_foss as slides
print("Aspose.Slides FOSS ready")

lxml 依存関係は自動的にインストールされます。他のシステムパッケージは必要ありません。


ステップ 2: 必要なモジュールをインポート

保存に必要なパッケージと SaveFormat 列挙型をインポートします。

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
from aspose.slides_foss import ShapeType

すべてのシェイプタイプ定数は aspose.slides_foss.ShapeType にあります。すべての書式設定タイプ(FillTypeNullableBool)も aspose.slides_foss にあります。


Step 3: プレゼンテーションを作成する

slides.Presentation() をコンテキストマネージャとして使用します。新しいプレゼンテーションは空白のスライドが1枚で開始されます。

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    print(f"Slides in new presentation: {len(prs.slides)}")
    # work with prs inside this block
    prs.save("output.pptx", SaveFormat.PPTX)

重要: 常に Presentationwith ブロック内で開いて使用してください。with ステートメントの外部に参照を保存しないでください。リソースが正しく解放されません。


Step 4: スライドにアクセスする

最初のスライドはインデックス0です。空白のプレゼンテーションには正確に1枚のスライドがあります。

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]  # zero-based index
    print(f"Slide at index 0: {slide}")
    prs.save("output.pptx", SaveFormat.PPTX)

ステップ5: シェイプを追加

slide.shapes.add_auto_shape() を使用して AutoShape を追加します。パラメーターは (shape_type, x, y, width, height) で、すべてポイント単位です (1 ポイント = 1/72 インチ; 標準スライドは 720 × 540 pt)。

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    # Rectangle at (50, 50) with 400 wide and 120 tall
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 400, 120)

    # Attach a text frame
    shape.add_text_frame("Hello from Aspose.Slides FOSS!")

    prs.save("with-shape.pptx", SaveFormat.PPTX)

ステップ 6: プレゼンテーションを保存

prs.save(path, SaveFormat.PPTX) を呼び出すのは、with ブロックが終了する前に行ってください。PPTX は唯一サポートされている出力形式です。

prs.save("result.pptx", SaveFormat.PPTX)

ファイルはアトミックに書き込まれます; この呼び出しの前にエラーが発生した場合、出力ファイルは作成されません。


完全な作業例

以下のスクリプトは、最初のスライドにタイトルシェイプ、2番目のスライドにテーブルを含む2枚のスライドのプレゼンテーションを作成します。

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    # --- Slide 1: title shape ---
    slide1 = prs.slides[0]
    title = slide1.shapes.add_auto_shape(ShapeType.RECTANGLE, 40, 40, 640, 80)
    tf = title.add_text_frame("Q1 Results: Executive Summary")
    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_height = 32
    fmt.font_bold = NullableBool.TRUE
    fmt.fill_format.fill_type = FillType.SOLID
    fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 70, 127)

    # --- Slide 2: table ---
    prs.slides.add_empty_slide(prs.layout_slides[0])
    slide2 = prs.slides[1]
    table = slide2.shapes.add_table(40, 40, [200.0, 120.0, 120.0], [40.0, 40.0, 40.0])
    headers = ["Region", "Revenue", "Growth"]
    data = [
        ["North", "$1.2M", "+8%"],
        ["South", "$0.9M", "+4%"],
    ]
    for col, header in enumerate(headers):
        table.rows[0][col].text_frame.text = header
    for row_idx, row_data in enumerate(data):
        for col, cell_text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = cell_text

    prs.save("q1-results.pptx", SaveFormat.PPTX)

print("Saved q1-results.pptx")

一般的な問題と対処法

ResourceWarning: unclosed Presentation

Presentationwith ブロックなしでインスタンス化しています。常に使用してください:

with slides.Presentation() as prs:
    ...

AttributeError: __enter__

このエラーが表示された場合、aspose.slides_foss をインポートしたか(aspose.slides ではなく)確認してください。PyPI 上のパッケージ名は aspose-slides-foss で、実行時のインポートは aspose.slides_foss です。

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX は列挙体のメンバーであり、関数ではありません。prs.save("file.pptx", SaveFormat.PPTX) として使用してください。


よくある質問

デフォルトのスライドサイズは何ですか?

新しいPresentation()は、標準の10 × 7.5インチ(720 × 540ポイント)サイズのスライドを作成します。このエディションではスライドサイズの変更はまだサポートされていません。

複数のスライドを追加できますか?

はい。prs.slides.add_empty_slide(prs.layout_slides[0]) を呼び出して空白スライドを追加し、インデックスでアクセスします:

prs.slides.add_empty_slide(prs.layout_slides[0])
slide2 = prs.slides[1]

既存のファイルを開いてスライドを追加できますか?

はい:

with slides.Presentation("existing.pptx") as prs:
    prs.slides.add_empty_slide(prs.layout_slides[0])
    prs.save("existing.pptx", SaveFormat.PPTX)

どのフォーマットに保存できますか?

SaveFormat.PPTX のみがサポートされています。このエディションでは PDF、HTML、SVG、または画像へのエクスポートは利用できません。


参照

 日本語