スライドをクローンする
プレゼンテーション内のスライドをクローンする
クローンとは、何かの正確なコピーまたはレプリカを作成するプロセスです。Aspose.Slides for Python via .NETは、任意のスライドのコピーまたはクローンを作成し、現在のプレゼンテーションまたは他の開いているプレゼンテーションにそのクローンドスライドを挿入することを可能にします。スライドのクローンプロセスでは、元のスライドを変更せずに開発者が修正できる新しいスライドが作成されます。スライドをクローンするには、いくつかの方法があります:
- プレゼンテーションの末尾でクローンする。
- プレゼンテーション内の別の位置でクローンする。
- 別のプレゼンテーションの末尾でクローンする。
- 別のプレゼンテーションの別の位置でクローンする。
- 別のプレゼンテーションの特定の位置でクローンする。
Aspose.Slides for Python via .NETでは、Presentationオブジェクトにより提供される(Slideオブジェクトのコレクション)が、上記のタイプのスライドクローンを実行するためのadd_cloneおよびinsert_cloneメソッドを提供しています。
プレゼンテーション内の末尾でクローンする
スライドをクローンして、既存のスライドの末尾で同じプレゼンテーションファイル内で使用したい場合は、以下の手順に従ってadd_cloneメソッドを使用します:
- Presentationクラスのインスタンスを作成します。
- Presentationオブジェクトによって提供されるスライドコレクションを参照して、SlideCollectionクラスをインスタンス化します。
- SlideCollectionオブジェクトによって提供されるadd_cloneメソッドを呼び出し、クローンするスライドをadd_cloneメソッドのパラメーターとして渡します。
- 修正したプレゼンテーションファイルを書き込む。
以下の例では、プレゼンテーションの最初の位置(ゼロインデックス)にあるスライドをプレゼンテーションの末尾にクローンしました。
import aspose.slides as slides
# プレゼンテーションファイルを表すPresentationクラスをインスタンス化
with slides.Presentation(path + "CloneWithinSamePresentationToEnd.pptx") as pres:
# 同じプレゼンテーション内のスライドのコレクションの末尾に希望のスライドをクローン
slds = pres.slides
slds.add_clone(pres.slides[0])
# 修正したプレゼンテーションをディスクに書き込む
pres.save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", slides.export.SaveFormat.PPTX)
プレゼンテーション内の別の位置でクローンする
スライドをクローンして、同じプレゼンテーションファイル内の別の位置で使用したい場合は、insert_cloneメソッドを使用します:
- Presentationクラスのインスタンスを作成します。
- Presentationオブジェクトによって提供されるSlidesコレクションを参照して、そのクラスをインスタンス化します。
- SlideCollectionオブジェクトによって提供されるinsert_cloneメソッドを呼び出し、クローンするスライドと新しい位置のインデックスをinsert_cloneメソッドのパラメーターとして渡します。
- 修正したプレゼンテーションをPPTXファイルとして書き込みます。
以下の例では、プレゼンテーションのゼロインデックス(位置1)にあるスライドをインデックス1(位置2)にクローンしました。
import aspose.slides as slides
# プレゼンテーションファイルを表すPresentationクラスをインスタンス化
with slides.Presentation(path + "CloneWithInSamePresentation.pptx") as pres:
# 同じプレゼンテーション内のスライドのコレクションの末尾に希望のスライドをクローン
slds = pres.slides
# 同じプレゼンテーション内の指定したインデックスに希望のスライドをクローン
slds.insert_clone(2, pres.slides[1])
# 修正したプレゼンテーションをディスクに書き込む
pres.save("Aspose_CloneWithInSamePresentation_out.pptx", slides.export.SaveFormat.PPTX)
別のプレゼンテーションの末尾でクローンする
別のプレゼンテーションからスライドをクローンし、既存のスライドの末尾にそのスライドを使用する必要がある場合:
- スライドをクローンする元のプレゼンテーションを含むPresentationクラスのインスタンスを作成します。
- スライドを追加する先のプレゼンテーションを含むPresentationクラスのインスタンスを作成します。
- 先のプレゼンテーションのスライドコレクションを参照して、SlideCollectionクラスをインスタンス化します。
- SlideCollectionオブジェクトによって提供されるadd_cloneメソッドを呼び出し、ソースプレゼンテーションのスライドをadd_cloneメソッドのパラメーターとして渡します。
- 修正した先のプレゼンテーションファイルを書き込みます。
以下の例では、ソースプレゼンテーションの最初のインデックスからスライドを先のプレゼンテーションの末尾にクローンしました。
import aspose.slides as slides
# ソースプレゼンテーションファイルを読み込むためにPresentationクラスをインスタンス化
with slides.Presentation(path + "CloneAtEndOfAnother.pptx") as srcPres:
# スライドがクローンされるための宛先PPTXのPresentationクラスをインスタンス化
with slides.Presentation() as destPres:
# 元のプレゼンテーションから希望のスライドを末尾にクローン
slds = destPres.slides
slds.add_clone(srcPres.slides[0])
# 宛先プレゼンテーションをディスクに書き込む
destPres.save("Aspose2_out.pptx", slides.export.SaveFormat.PPTX)
別のプレゼンテーションの別の位置でクローンする
別のプレゼンテーションからスライドをクローンし、特定の位置にそのスライドを使用する必要がある場合:
- スライドをクローンする元のプレゼンテーションを含むPresentationクラスのインスタンスを作成します。
- スライドを追加する宛先プレゼンテーションを含むPresentationクラスのインスタンスを作成します。
- 宛先プレゼンテーションのスライドコレクションを参照して、ISlideCollectionクラスをインスタンス化します。
- ISlideCollectionオブジェクトによって提供されるinsert_cloneメソッドを呼び出し、ソースプレゼンテーションからスライドをクローンし、希望の位置をinsert_cloneメソッドのパラメーターとして渡します。
- 修正した宛先プレゼンテーションファイルを書き込みます。
以下の例では、ソースプレゼンテーションのゼロインデックスからスライドを宛先プレゼンテーションのインデックス1(位置2)にクローンしました。
import aspose.slides as slides
# ソースプレゼンテーションファイルを読み込むためにPresentationクラスをインスタンス化
with slides.Presentation(path + "CloneAtEndOfAnother.pptx") as srcPres:
# スライドがクローンされるための宛先PPTXのPresentationクラスをインスタンス化
with slides.Presentation("Aspose2_out.pptx") as destPres:
slds = destPres.slides
slds.insert_clone(2, srcPres.slides[0])
# 宛先プレゼンテーションをディスクに書き込む
destPres.save("Aspose3_out.pptx", slides.export.SaveFormat.PPTX)
別のプレゼンテーションの特定の位置でクローンする
元のプレゼンテーションのマスタースライド付きのスライドをクローンし、別のプレゼンテーションに使用する必要がある場合、元のプレゼンテーションから宛先プレゼンテーションに希望するマスタースライドを最初にクローンする必要があります。その後、マスタースライドを持つスライドのクローンに使用する必要があります。**add_clone(ISlide, IMasterSlide)**は、ソースプレゼンテーションからではなく、宛先プレゼンテーションのマスタースライドを期待します。マスター付きのスライドをクローンするには、以下の手順に従ってください:
- スライドをクローンする元のプレゼンテーションを含むPresentationクラスのインスタンスを作成します。
- スライドをクローンする宛先プレゼンテーションを含むPresentationクラスのインスタンスを作成します。
- クローンされるスライドとマスタースライドにアクセスします。
- 宛先プレゼンテーションのPresentationオブジェクトによって提供されるマスターコレクションを参照して、IMasterSlideCollectionクラスをインスタンス化します。
- IMasterSlideCollectionオブジェクトによって提供されるadd_cloneメソッドを呼び出し、クローンするためのソースPPTXからのマスターをadd_cloneメソッドのパラメーターとして渡します。
- 宛先プレゼンテーションのPresentationオブジェクトによって提供されるスライドコレクションへの参照を設定して、ISlideCollectionクラスをインスタンス化します。
- ISlideCollectionオブジェクトによって提供されるadd_cloneメソッドを呼び出し、ソースプレゼンテーションからクローンするスライドとマスタースライドをadd_cloneメソッドのパラメーターとして渡します。
- 修正した宛先プレゼンテーションファイルを書き込みます。
以下の例では、元のプレゼンテーションのゼロインデックスにあるマスタースライドを持つスライドを宛先プレゼンテーションの末尾に、ソーススライドのマスタースライドを使用してクローンしました。
import aspose.slides as slides
# ソースプレゼンテーションファイルを読み込むためにPresentationクラスをインスタンス化
with slides.Presentation(path + "CloneToAnotherPresentationWithMaster.pptx") as srcPres:
# スライドがクローンされるための宛先プレゼンテーションのPresentationクラスをインスタンス化
with slides.Presentation() as destPres:
# ソースプレゼンテーション内のスライドコレクションからISlideをインスタンス化し、
# マスタースライドを伴う
sourceSlide = srcPres.slides[0]
sourceMaster = sourceSlide.layout_slide.master_slide
# 宛先プレゼンテーションのマスターコレクションにソースプレゼンテーションから希望のマスタースライドをクローン
masters = destPres.masters
destMaster = sourceSlide.layout_slide.master_slide
# 宛先プレゼンテーションのマスターコレクションにソースプレゼンテーションから希望のマスタースライドをクローン
iSlide = masters.add_clone(sourceMaster)
# 宛先プレゼンテーションのスライドコレクションにおいて欲しいマスターを伴ってソースプレゼンテーションからスライドをクローン
slds = destPres.slides
slds.add_clone(sourceSlide, iSlide, True)
# 宛先プレゼンテーションをディスクに書き込む
destPres.save("CloneToAnotherPresentationWithMaster_out.pptx", slides.export.SaveFormat.PPTX)
指定されたセクションの末尾でクローンする
Aspose.Slides for Python via .NETを使用すると、プレゼンテーションの1つのセクションからスライドをクローンし、そのスライドを同じプレゼンテーションの別のセクションに挿入できます。この場合、ISlideCollectionインターフェースからadd_cloneメソッドを使用する必要があります。
このPythonコードは、スライドをクローンし、クローンしたスライドを指定されたセクションに挿入する方法を示しています:
import aspose.slides as slides
with slides.Presentation() as pres:
slide = pres.slides.add_empty_slide(pres.slides[0].layout_slide)
slide.shapes.add_auto_shape(slides.ShapeType.ELLIPSE, 150, 150, 100, 100) # クローンするために
slide2 = pres.slides.add_empty_slide(pres.slides[0].layout_slide)
section = pres.sections.add_section("Section2", slide2)
pres.slides.add_clone(slide, section)
pres.save("pres.pptx", slides.export.SaveFormat.PPTX)