Python via Java でプレゼンテーション ビューアを作成する

イントロダクション

Aspose.Slides for Python via Java は、スライドを含むプレゼンテーション ファイルの作成に使用されます。たとえば、Microsoft PowerPoint でプレゼンテーションを開くことで、これらのスライドを表示できます。しかし、開発者がスライドを画像として好みの画像ビューアで表示したり、独自のプレゼンテーションビューアを作成したりする必要がある場合があります。そのような場合、Aspose.Slides を使用すると個々のスライドを画像としてエクスポートできます。この記事ではその方法を説明します。

スライドから SVG 画像を生成する

Aspose.Slides を使用してプレゼンテーション スライドから SVG 画像を生成するには、以下の手順に従ってください:

  1. Presentation クラスのインスタンスを作成します。
  2. インデックスでスライド参照を取得します。
  3. バイト ストリームを開きます。
  4. スライドを SVG 画像としてストリームに保存し、ファイルに書き出します。
import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation
from java.io import ByteArrayOutputStream

slide_index = 0

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(slide_index)
    svg_stream = ByteArrayOutputStream()
    try:
        slide.writeAsSvg(svg_stream)
        svg_data = bytes(svg_stream.toByteArray())
        with open("output.svg", "wb") as output_file:
            output_file.write(svg_data)
    finally:
        svg_stream.close()
finally:
    presentation.dispose()

カスタム シェイプ ID で SVG を生成する

Aspose.Slides を使用して、カスタム シェイプ ID を持つスライドから SVG を生成できます。これを行うには、SvgShapeSvgShape.setId メソッドを使用します。CustomSvgShapeFormattingController を使用してシェイプ ID を設定できます。

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SVGOptions
from java.io import ByteArrayOutputStream

class CustomSvgShapeFormattingController:
    def __init__(self, shape_start_index=0):
        self.shape_index = shape_start_index

    def formatShape(self, svg_shape, shape):
        svg_shape.setId(f"shape-{self.shape_index}")
        self.shape_index += 1


slide_index = 0

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(slide_index)
    controller = CustomSvgShapeFormattingController()
    controller_proxy = jpype.JProxy("com.aspose.slides.ISvgShapeFormattingController", inst=controller)
    svg_options = SVGOptions()
    svg_options.setShapeFormattingController(controller_proxy)

    svg_stream = ByteArrayOutputStream()
    try:
        slide.writeAsSvg(svg_stream, svg_options)
        svg_data = bytes(svg_stream.toByteArray())
        with open("output.svg", "wb") as output_file:
            output_file.write(svg_data)
    finally:
        svg_stream.close()
finally:
    presentation.dispose()

スライドのサムネイル画像を作成する

Aspose.Slides はスライドのサムネイル画像の生成を支援します。Aspose.Slides を使用してスライドのサムネイルを生成するには、以下の手順に従ってください:

  1. Presentation クラスのインスタンスを作成します。
  2. インデックスでスライド参照を取得します。
  3. 定義したスケールで参照スライドのサムネイル画像を取得します。
  4. 必要な画像形式でサムネイル画像を保存します。
import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, ImageFormat

slide_index = 0
scale_x = 1.0
scale_y = scale_x

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(slide_index)
    image = slide.getImage(scale_x, scale_y)
    try:
        image.save("output.jpg", ImageFormat.Jpeg)
    finally:
        image.dispose()
finally:
    presentation.dispose()

ユーザー定義のサイズでスライドサムネイルを作成する

ユーザー定義のサイズでスライドのサムネイル画像を作成するには、以下の手順に従ってください:

  1. Presentation クラスのインスタンスを作成します。
  2. インデックスでスライド参照を取得します。
  3. 定義したサイズで参照スライドのサムネイル画像を取得します。
  4. 必要な画像形式でサムネイル画像を保存します。
import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, ImageFormat
from java.awt import Dimension

slide_index = 0
slide_size = Dimension(1200, 800)

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(slide_index)
    image = slide.getImage(slide_size)
    try:
        image.save("output.jpg", ImageFormat.Jpeg)
    finally:
        image.dispose()
finally:
    presentation.dispose()

スピーカーノート付きスライドサムネイルを作成する

Aspose.Slides を使用してスピーカーノート付きスライドのサムネイルを生成するには、以下の手順に従ってください:

  1. RenderingOptions クラスのインスタンスを作成します。
  2. スピーカーノートの位置を設定するには、RenderingOptions.setSlidesLayoutOptions メソッドを使用します。
  3. Presentation クラスのインスタンスを作成します。
  4. インデックスでスライド参照を取得します。
  5. レンダリングオプションを使用して参照スライドのサムネイル画像を取得します。
  6. 必要な画像形式でサムネイル画像を保存します。
import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, ImageFormat, NotesCommentsLayoutingOptions, NotesPositions, RenderingOptions

slide_index = 0
layouting_options = NotesCommentsLayoutingOptions()
layouting_options.setNotesPosition(NotesPositions.BottomTruncated)

rendering_options = RenderingOptions()
rendering_options.setSlidesLayoutOptions(layouting_options)

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(slide_index)
    image = slide.getImage(rendering_options)
    try:
        image.save("output.png", ImageFormat.Png)
    finally:
        image.dispose()
finally:
    presentation.dispose()

ライブ例

Aspose.Slides API で実装できることを確認するには、無料アプリの Aspose.Slides Viewer を試すことができます:

Online PowerPoint Viewer

FAQ

ウェブ アプリケーションにプレゼンテーション ビューアを埋め込むことはできますか?

はい。サーバー側で Aspose.Slides を使用してスライドを画像または HTML としてレンダリングし、ブラウザーに表示できます。ナビゲーションやズーム機能は JavaScript で実装でき、インタラクティブな体験を提供します。

カスタム ビューア内でスライドを表示する最適な方法は何ですか?

推奨される方法は、各スライドを画像(PNG や SVG など)としてレンダリングするか、Aspose.Slides を使用して HTML に変換し、デスクトップの場合はピクチャーボックス、ウェブの場合は HTML コンテナ内に表示することです。

スライドが多数含まれる大規模なプレゼンテーションをどのように処理しますか?

大規模なデッキの場合、スライドの遅延ロードやオンデマンドレンダリングを検討してください。ユーザーがスライドに移動したときにのみコンテンツを生成することで、メモリ使用量と読み込み時間を削減できます。