Javaでプレゼンテーションスライドをクローン

プレゼンテーション内のスライドのクローン作成

クローンとは、何かの正確なコピーまたはレプリカを作るプロセスです。Aspose.Slides for Java では、任意のスライドのコピーまたはクローンを作成し、そのクローンしたスライドを現在のプレゼンテーションまたは他の開いているプレゼンテーションに挿入することが可能です。スライドのクローン作成プロセスにより、元のスライドを変更せずに開発者が新しいスライドを修正できます。スライドをクローンする方法はいくつかあります。

  • プレゼンテーション内の末尾にクローンする。
  • プレゼンテーション内の別の位置にクローンする。
  • 別のプレゼンテーションの末尾にクローンする。
  • 別のプレゼンテーションの別の位置にクローンする。
  • 別のプレゼンテーションの特定の位置にクローンする。

Aspose.Slides for Java では、Presentation オブジェクトが公開する (ISlide のコレクション) が、上記のスライドクローンの種類を実行するための addClone および insertClone メソッドを提供します。

プレゼンテーションの末尾にスライドをクローンする

既存のスライドの末尾に同一プレゼンテーションファイル内でスライドをクローンして使用したい場合は、以下の手順に従って addClone メソッドを使用します。

  1. Presentation クラスのインスタンスを作成します。
  2. Presentation オブジェクトが公開する Slides コレクションを参照して ISlideCollection クラスのインスタンスを作成します。
  3. ISlideCollection オブジェクトが公開する addClone メソッドを呼び出し、クローンするスライドをパラメータとして渡します。
  4. 変更されたプレゼンテーションファイルを書き込みます。

以下の例では、プレゼンテーションの最初の位置(ゼロインデックス)にあるスライドをプレゼンテーションの末尾にクローンしました。

// プレゼンテーション ファイルを表す Presentation クラスのインスタンスを作成します
Presentation pres = new Presentation("CloneWithinSamePresentationToEnd.pptx");
try {
    // 同じプレゼンテーション内のスライドコレクションの末尾に目的のスライドをクローンします
    ISlideCollection slds = pres.getSlides();

    slds.addClone(pres.getSlides().get_Item(0));

    // 変更されたプレゼンテーションをディスクに書き込みます
    pres.save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}

プレゼンテーション内の別の位置にスライドをクローンする

同一プレゼンテーションファイル内で別の位置にスライドをクローンして使用したい場合は、insertClone メソッドを使用します。

  1. Presentation クラスのインスタンスを作成します。
  2. Presentation オブジェクトが公開する Slides コレクションを参照してクラスのインスタンスを作成します。
  3. ISlideCollection オブジェクトが公開する insertClone メソッドを呼び出し、クローンするスライドと新しい位置のインデックスをパラメータとして渡します。
  4. 変更されたプレゼンテーションを PPTX ファイルとして書き込みます。

以下の例では、プレゼンテーションのゼロインデックス(位置 1)にあるスライドをインデックス 1(位置 2)にクローンしました。

// プレゼンテーション ファイルを表す Presentation クラスのインスタンスを作成します
Presentation pres = new Presentation("CloneWithInSamePresentation.pptx");
try {
    // 同じプレゼンテーション内のスライドコレクションの末尾に目的のスライドをクローンします
    ISlideCollection slds = pres.getSlides();

    // 同じプレゼンテーション内の指定インデックスに目的のスライドをクローンします
    slds.insertClone(2, pres.getSlides().get_Item(1));

    // 変更されたプレゼンテーションをディスクに書き込みます
    pres.save("Aspose_CloneWithInSamePresentation_out.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}

別のプレゼンテーションの末尾にスライドをクローンする

別のプレゼンテーションファイルにスライドをクローンし、既存のスライドの末尾に追加したい場合は、次の手順で行います。

  1. クローン元となるプレゼンテーションを含む Presentation クラスのインスタンスを作成します。
  2. スライドを追加する宛先プレゼンテーションを含む Presentation クラスのインスタンスを作成します。
  3. 宛先プレゼンテーションの Slides コレクションを参照して ISlideCollection クラスのインスタンスを作成します。
  4. ISlideCollection オブジェクトが公開する addClone メソッドを呼び出し、ソースプレゼンテーションからのスライドをパラメータとして渡します。
  5. 変更された宛先プレゼンテーションファイルを書き込みます。

以下の例では、ソースプレゼンテーションの最初のインデックスにあるスライドを宛先プレゼンテーションの末尾にクローンしました。

// ソースプレゼンテーション ファイルを読み込むために Presentation クラスのインスタンスを作成します
Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
    // スライドをクローンする先の PPTX 用に Presentation クラスのインスタンスを作成します
    Presentation destPres = new Presentation();
    try {
        // ソースプレゼンテーションから目的のスライドを取得し、宛先プレゼンテーションのスライドコレクションの末尾にクローンします
        ISlideCollection slds = destPres.getSlides();

        slds.addClone(srcPres.getSlides().get_Item(0));

        // 宛先プレゼンテーションをディスクに書き込みます
        destPres.save("Aspose2_out.pptx", SaveFormat.Pptx);
    } finally {
        destPres.dispose();
    }
} finally {
    srcPres.dispose();
}

別のプレゼンテーションの別の位置にスライドをクローンする

別のプレゼンテーションファイルにスライドをクローンし、特定の位置に配置したい場合は、次の手順で行います。

  1. クローン元となるプレゼンテーションを含む Presentation クラスのインスタンスを作成します。
  2. スライドを追加するプレゼンテーションを含む Presentation クラスのインスタンスを作成します。
  3. 宛先プレゼンテーションの Slides コレクションを参照して ISlideCollection クラスのインスタンスを作成します。
  4. ISlideCollection オブジェクトが公開する insertClone メソッドを呼び出し、ソースプレゼンテーションからのスライドと目的の位置をパラメータとして渡します。
  5. 変更された宛先プレゼンテーションファイルを書き込みます。

以下の例では、ソースプレゼンテーションのゼロインデックスにあるスライドを宛先プレゼンテーションのインデックス 1(位置 2)にクローンしました。

// ソースプレゼンテーション ファイルを読み込むために Presentation クラスのインスタンスを作成します
Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
    // スライドをクローンする宛先 PPTX 用に Presentation クラスのインスタンスを作成します
    Presentation destPres = new Presentation();
    try {
        // ソースプレゼンテーションから目的のスライドを取得し、宛先プレゼンテーションのスライドコレクションの末尾にクローンします
        ISlideCollection slds = destPres.getSlides();

        slds.insertClone(2, srcPres.getSlides().get_Item(0));

        // 宛先プレゼンテーションをディスクに書き込みます
        destPres.save("Aspose2_out.pptx", SaveFormat.Pptx);
    } finally {
        destPres.dispose();
    }
} finally {
    srcPres.dispose();
}

別のプレゼンテーションの特定の位置にスライドをクローンする

マスタースライドを持つスライドを別のプレゼンテーションにクローンする場合は、まずソースプレゼンテーションから宛先プレゼンテーションへ目的のマスタースライドをクローンする必要があります。その後、マスタースライドを使用してスライドをクローンします。addClone(ISlide, IMasterSlide, boolean) は宛先プレゼンテーションのマスタースライドを受け取ります。マスタースライド付きでスライドをクローンする手順は以下の通りです。

  1. クローン元となるプレゼンテーションを含む Presentation クラスのインスタンスを作成します。
  2. クローン先となるプレゼンテーションを含む Presentation クラスのインスタンスを作成します。
  3. クローン対象のスライドとそのマスタースライドにアクセスします。
  4. 宛先プレゼンテーションの Presentation オブジェクトが公開する Masters コレクションを参照して IMasterSlideCollection クラスをインスタンス化します。
  5. IMasterSlideCollection オブジェクトが公開する addClone メソッドを呼び出し、ソース PPTX からクローンするマスターをパラメータとして渡します。
  6. 宛先プレゼンテーションの Presentation オブジェクトが公開する Slides コレクションを参照して ISlideCollection クラスをインスタンス化します。
  7. ISlideCollection オブジェクトが公開する addClone メソッドを呼び出し、ソースプレゼンテーションからのスライドとマスタースライドをパラメータとして渡します。
  8. 変更された宛先プレゼンテーションファイルを書き込みます。

以下の例では、ソースプレゼンテーションのゼロインデックスにあるマスター付きスライドを、ソーススライドのマスターを使用して宛先プレゼンテーションの末尾にクローンしました。

    // ソースプレゼンテーション ファイルを読み込むために Presentation クラスのインスタンスを作成します
    Presentation srcPres = new Presentation("CloneToAnotherPresentationWithMaster.pptx");
    try {
        // スライドをクローンする宛先プレゼンテーション用に Presentation クラスのインスタンスを作成します(スライドをクローンする場所)
        Presentation destPres = new Presentation();
        try {
            // ソースプレゼンテーションのスライドコレクションから ISlide を取得し、
            // マスタースライド
            ISlide SourceSlide = srcPres.getSlides().get_Item(0);
            IMasterSlide SourceMaster = SourceSlide.getLayoutSlide().getMasterSlide();

            // ソースプレゼンテーションから目的のマスタースライドを取得し、
            // 宛先プレゼンテーションのマスターコレクションにクローンします
            IMasterSlideCollection masters = destPres.getMasters();
            IMasterSlide DestMaster = SourceSlide.getLayoutSlide().getMasterSlide();

            // ソースプレゼンテーションから目的のマスタースライドを取得し、
            // 宛先プレゼンテーションのマスターコレクションにクローンします
            IMasterSlide iSlide = masters.addClone(SourceMaster);

            // ソースプレゼンテーションのスライドを、指定したマスタースライドとともに、
            // 宛先プレゼンテーションのスライドコレクションの末尾にクローンします
            ISlideCollection slds = destPres.getSlides();
            slds.addClone(SourceSlide, iSlide, true);

            // 宛先プレゼンテーションをディスクに保存します
            destPres.save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat.Pptx);
        } finally {
            destPres.dispose();
        }
    } finally {
        srcPres.dispose();
    }

指定セクションの末尾にスライドをクローンする

同一プレゼンテーション内で別のセクションの末尾にスライドをクローンしたい場合は、addClone メソッドを使用します。Aspose.Slides for Java は、最初のセクションからスライドをクローンし、そのクローンしたスライドを同じプレゼンテーションの第2セクションに挿入することを可能にします。

以下のコードスニペットは、スライドをクローンし、指定されたセクションにクローンしたスライドを挿入する方法を示しています。

IPresentation presentation = new Presentation();
try {
    presentation.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 200, 50, 300, 100);
    presentation.getSections().addSection("Section 1", presentation.getSlides().get_Item(0));

    ISection section2 = presentation.getSections().appendEmptySection("Section 2");
    presentation.getSlides().addClone(presentation.getSlides().get_Item(0), section2);
    
	// ディスクに宛先プレゼンテーションを保存します
    presentation.save(dataDir + "CloneSlideIntoSpecifiedSection.pptx", SaveFormat.Pptx);
} finally {
    if (presentation != null) presentation.dispose();
}

FAQ

スピーカーノートやレビュアーコメントもクローンされますか?

はい。ノートページとレビューコメントはクローンに含まれます。不要な場合は、挿入後に削除するしてください。

チャートとそのデータソースはどのように扱われますか?

チャートオブジェクト、書式設定、埋め込みデータはコピーされます。チャートが外部ソース(例: OLE 埋め込みワークブック)にリンクされている場合、そのリンクはOLE objectとして保持されます。ファイル間で移動した後は、データの可用性と更新動作を確認してください。

クローンの挿入位置やセクションを制御できますか?

はい。スライドのインデックスを指定してクローンを挿入し、選択したsectionに配置できます。対象セクションが存在しない場合は、先に作成してからスライドを移動してください。