Android で PowerPoint プレゼンテーションの SmartArt を管理する

概要

SmartArt は、ノード、ノード シェイプ、レイアウトで構成された PowerPoint 図です。Aspose.Slides for Android via Java を使用すると、SmartArt の作成、ノードからのテキスト読み取り、レイアウトの変更、非表示ノードの検査、組織図レイアウトの構成、および画像組織図の作成ができます。

SmartArt オブジェクトからテキストを取得

SmartArt のノードは 1 つ以上のシェイプを含むことがあります。表示テキストを取得するには、ISmartArt.getAllNodes を反復処理し、ISmartArtShape.getTextFrame が返す ITextFrame を読み取ります。

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IShape shape = slide.getShapes().get_Item(0);

    if (shape instanceof ISmartArt) {
        ISmartArt smartArt = (ISmartArt) shape;

        for (ISmartArtNode node : smartArt.getAllNodes()) {
            for (ISmartArtShape nodeShape : node.getShapes()) {
                if (nodeShape.getTextFrame() != null) {
                    System.out.println(nodeShape.getTextFrame().getText());
                }
            }
        }
    }
} finally {
    presentation.dispose();
}

SmartArt オブジェクトのレイアウト タイプを変更

SmartArt のレイアウトは、ノードの配置と接続方法を制御します。以下の例では、SmartArtLayoutTypeBasicBlockList 値で SmartArt オブジェクトを作成し、BasicProcess 値に変更してプレゼンテーションを保存します。

Presentation presentation = new Presentation();
try {
    ISmartArt smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
        10, 10, 400, 300, SmartArtLayoutType.BasicBlockList);

    smartArt.setLayout(SmartArtLayoutType.BasicProcess);

    presentation.save("ChangeSmartArtLayout_out.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

SmartArt ノードが非表示かどうかを確認

ISmartArtNode.isHidden は、ノードが SmartArt データモデルで非表示かどうかを示します。選択されたレイアウトが可視的な図要素として表示しなくても、非表示ノードは構造内に存在する可能性があります。

以下の例では、SmartArtLayoutTypeRadialCycle 値を使用する SmartArt オブジェクトにノードを追加し、ノードの非表示状態を確認します。

Presentation presentation = new Presentation();
try {
    ISmartArt smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
        10, 10, 400, 300, SmartArtLayoutType.RadialCycle);

    ISmartArtNode node = smartArt.getAllNodes().addNode();
    boolean isHidden = node.isHidden();

    if (isHidden) {
        System.out.println("The node is hidden in the SmartArt data model.");
    }

    presentation.save("CheckSmartArtHiddenProperty_out.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

組織図レイアウトの取得または設定

組織図レイアウトを使用する SmartArt 図の場合、ISmartArtNode.getOrganizationChartLayoutISmartArtNode.setOrganizationChartLayout は、親ノードの下で子ノードがどのように配置されるかを定義します。たとえば、選択された OrganizationChartLayoutType に応じて、子ノードを左側、右側、または両側から吊り下げるように設定できます。

以下の例では、組織図を作成し、最初のノードのレイアウトを OrganizationChartLayoutTypeLeftHanging 値に設定します。

Presentation presentation = new Presentation();
try {
    ISmartArt smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
        10, 10, 400, 300, SmartArtLayoutType.OrganizationChart);

    ISmartArtNode rootNode = smartArt.getNodes().get_Item(0);
    rootNode.setOrganizationChartLayout(OrganizationChartLayoutType.LeftHanging);

    presentation.save("OrganizationChartLayout_out.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

画像組織図の作成

画像組織図は、画像プレースホルダーを含む階層図向けに設計された SmartArt レイアウトです。スライドに SmartArt オブジェクトを追加する際に、SmartArtLayoutTypePictureOrganizationChart 値を使用します。

Presentation presentation = new Presentation();
try {
    ISmartArt smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
        0, 0, 400, 400, SmartArtLayoutType.PictureOrganizationChart);

    presentation.save("PictureOrganizationChart_out.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

FAQ

SmartArt は RTL 言語向けにミラーリングまたは反転をサポートしていますか?

はい。選択された SmartArt レイアウトが反転をサポートしている場合、ISmartArt.setReversed メソッドは図の方向を左から右へから右から左へ、またはその逆に切り替えます。

SmartArt を同じスライドまたは別のプレゼンテーションにコピーして書式を保持するにはどうすればよいですか?

SmartArt が含まれるスライド上の ShapeCollection.addClone を使用して SmartArt シェイプをクローン するか、SmartArt を含むスライド全体をクローン できます。どちらの方法もサイズ、位置、書式を保持します。

SmartArt をプレビューや Web エクスポート用にラスター画像としてレンダリングするにはどうすればよいですか?

スライドをレンダリング またはプレゼンテーション全体を PNG または JPEG に変換します。SmartArt はスライドの一部としてレンダリングされます。

スライドに複数の SmartArt オブジェクトがある場合、特定の SmartArt オブジェクトを見つけるにはどうすればよいですか?

SmartArt シェイプに固有の Shape.getAlternativeText または Shape.getName の値を設定し、BaseSlide.getShapes でその値を検索し、該当するシェイプが ISmartArt であることを確認します。