JavaでPowerPoint SmartArtシェイプノードを作成または管理する

Javaを使用してPowerPointプレゼンテーションにSmartArtノードを追加する

Aspose.Slides for Android via Javaは、最も簡単な方法でSmartArtシェイプを管理するための最もシンプルなAPIを提供しています。以下のサンプルコードは、SmartArtシェイプ内にノードと子ノードを追加するのに役立ちます。

  1. Presentationクラスのインスタンスを作成し、SmartArtシェイプでプレゼンテーションをロードします。
  2. インデックスを使って最初のスライドの参照を取得します。
  3. 最初のスライド内のすべてのシェイプをトラバースします。
  4. シェイプがSmartArtタイプであるか確認し、SmartArtであれば選択したシェイプをSmartArtに型変換します。
  5. SmartArtシェイプのNodeCollection新しいノードを追加し、TextFrameにテキストを設定します。
  6. 次に、新しく追加したSmartArtノードに子ノード追加し、TextFrameにテキストを設定します。
  7. プレゼンテーションを保存します。
// 目的のプレゼンテーションをロードする
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
    // 最初のスライド内のすべてのシェイプをトラバースする
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // シェイプがSmartArtタイプであるか確認
        if (shape instanceof SmartArt) 
        {
            // シェイプをSmartArtに型変換
            SmartArt smart = (SmartArt) shape;
    
            // 新しいSmartArtノードを追加
            SmartArtNode TemNode = (SmartArtNode) smart.getAllNodes().addNode();
    
            // テキストを追加
            TemNode.getTextFrame().setText("Test");
    
            // 親ノードに新しい子ノードを追加します。コレクションの最後に追加されます
            SmartArtNode newNode = (SmartArtNode) TemNode.getChildNodes().addNode();
    
            // テキストを追加
            newNode.getTextFrame().setText("New Node Added");
        }
    }
    
    // プレゼンテーションを保存
    pres.save("AddSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

特定の位置にSmartArtノードを追加する

以下のサンプルコードでは、特定の位置にSmartArtシェイプのそれぞれのノードに属する子ノードを追加する方法を説明します。

  1. Presentationクラスのインスタンスを作成します。
  2. インデックスを使って最初のスライドの参照を取得します。
  3. アクセスしたスライドにStackedListタイプのSmartArtシェイプを追加します。
  4. 追加したSmartArtシェイプ内の最初のノードにアクセスします。
  5. 次に、選択したノードの位置2に子ノードを追加し、そのテキストを設定します。
  6. プレゼンテーションを保存します。
// プレゼンテーションインスタンスを作成
Presentation pres = new Presentation();
try {
    // プレゼンテーションスライドにアクセス
    ISlide slide = pres.getSlides().get_Item(0);

    // Smart Art IShapeを追加
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);

    // 追加したSmartArtシェイプのインデックス0のノードにアクセス
    ISmartArtNode node = smart.getAllNodes().get_Item(0);

    // 親ノードの位置2に新しい子ノードを追加
    SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).addNodeByPosition(2);

    // テキストを追加
    chNode.getTextFrame().setText("Sample Text Added");

    // プレゼンテーションを保存
    pres.save("AddSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Javaを使ってPowerPointプレゼンテーション内のSmartArtノードにアクセスする

以下のサンプルコードは、SmartArtシェイプ内のノードにアクセスするのに役立ちます。SmartArtのLayoutTypeは読み取り専用であり、SmartArtシェイプが追加されたときだけ設定されることに注意してください。

  1. Presentationクラスのインスタンスを作成し、SmartArtシェイプでプレゼンテーションをロードします。
  2. インデックスを使って最初のスライドの参照を取得します。
  3. 最初のスライド内のすべてのシェイプをトラバースします。
  4. シェイプがSmartArtタイプであるか確認し、SmartArtであれば選択したシェイプをSmartArtに型変換します。
  5. SmartArtシェイプ内のすべてのノードをトラバースします。
  6. SmartArtノードの位置、レベル、テキストのような情報にアクセスして表示します。
// プレゼンテーションクラスをインスタンス化
Presentation pres = new Presentation("SmartArtShape.pptx");
try {
    // 最初のスライドを取得
    ISlide slide = pres.getSlides().get_Item(0);
    
    // 最初のスライド内のすべてのシェイプをトラバース
    for (IShape shape : slide.getShapes()) 
    {
        // シェイプがSmartArtタイプであるか確認
        if (shape instanceof ISmartArt) 
        {
            // シェイプをSmartArtに型変換
            ISmartArt smart = (ISmartArt) shape;
    
            // SmartArt内のすべてのノードをトラバース
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                // インデックスiのSmartArtノードにアクセス
                SmartArtNode node = (SmartArtNode) smart.getAllNodes().get_Item(i);
    
                // SmartArtノードのパラメータを印刷
                System.out.print(node.getTextFrame().getText() + " " + node.getLevel() + " " + node.getPosition());
            }
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

SmartArt子ノードにアクセスする

以下のサンプルコードは、SmartArtシェイプのそれぞれのノードに属する子ノードにアクセスするのに役立ちます。

  1. Presentationクラスのインスタンスを作成し、SmartArtシェイプでプレゼンテーションをロードします。
  2. インデックスを使って最初のスライドの参照を取得します。
  3. 最初のスライド内のすべてのシェイプをトラバースします。
  4. シェイプがSmartArtタイプであるか確認し、SmartArtであれば選択したシェイプをSmartArtに型変換します。
  5. SmartArtシェイプ内のすべてのノードをトラバースします。
  6. 選択したSmartArtシェイプのノードについて、特定のノード内のすべての子ノードをトラバースします。
  7. 子ノードの位置、レベル、テキストのような情報にアクセスして表示します。
// プレゼンテーションクラスをインスタンス化
Presentation pres = new Presentation("AccessChildNodes.pptx");
try {
    // 最初のスライドを取得
    ISlide slide = pres.getSlides().get_Item(0);
    
    // 最初のスライド内のすべてのシェイプをトラバース
    for (IShape shape : slide.getShapes()) 
    {
        // シェイプがSmartArtタイプであるか確認
        if (shape instanceof ISmartArt) 
        {
            // シェイプをSmartArtに型変換
            ISmartArt smart = (ISmartArt) shape;
    
            // SmartArt内のすべてのノードをトラバース
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                // インデックスiのSmartArtノードにアクセス
                SmartArtNode node0 = (SmartArtNode) smart.getAllNodes().get_Item(i);
                
                // インデックスiのSmartArtノード内の子ノードをトラバース
                for (int j = 0; j < node0.getChildNodes().size(); j++) 
                {
                    // SmartArtノード内の子ノードにアクセス
                    SmartArtNode node = (SmartArtNode) node0.getChildNodes().get_Item(j);
    
                    // SmartArt子ノードのパラメータを印刷
                    System.out.print("j = " + j + ", Text = " + node.getTextFrame().getText() + ",  Level = " + node.getLevel() + ", Position = " + node.getPosition());
                }
            }
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

特定の位置のSmartArt子ノードにアクセスする

この例では、SmartArtシェイプのそれぞれのノードに属する特定の位置にある子ノードにアクセスする方法を学びます。

  1. Presentationクラスのインスタンスを作成します。
  2. インデックスを使って最初のスライドの参照を取得します。
  3. StackedListタイプのSmartArtシェイプを追加します。
  4. 追加したSmartArtシェイプにアクセスします。
  5. アクセスしたSmartArtシェイプのインデックス0でノードにアクセスします。
  6. 次に、**get_Item()**メソッドを使用してアクセスしたSmartArtノードで位置1の子ノードにアクセスします。
  7. 子ノードの位置、レベル、テキストのような情報にアクセスして表示します。
// プレゼンテーションをインスタンス化
Presentation pres = new Presentation();
try {
    // 最初のスライドにアクセス
    ISlide slide = pres.getSlides().get_Item(0);
    
    // 最初のスライドにSmartArtシェイプを追加
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
    
    // インデックス0のSmartArtノードにアクセス
    ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
    // 親ノードの位置1の子ノードにアクセス
    int position = 1;
    SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).get_Item(position);
    
    // SmartArt子ノードのパラメータを印刷
    System.out.print("Text = " + chNode.getTextFrame().getText() + ",  Level = " + chNode.getLevel() + ", Position = " + chNode.getPosition());
} finally {
    if (pres != null) pres.dispose();
}

Javaを使ってPowerPointプレゼンテーション内のSmartArtノードを削除する

この例では、SmartArtシェイプ内のノードを削除する方法を学びます。

  1. Presentationクラスのインスタンスを作成し、SmartArtシェイプでプレゼンテーションをロードします。
  2. インデックスを使って最初のスライドの参照を取得します。
  3. 最初のスライド内のすべてのシェイプをトラバースします。
  4. シェイプがSmartArtタイプであるか確認し、SmartArtであれば選択したシェイプをSmartArtに型変換します。
  5. SmartArtが0ノード以上を持っているか確認します。
  6. 削除するSmartArtノードを選択します。
  7. 選択したノードをRemoveNodeメソッドを使って削除します。
  8. プレゼンテーションを保存します。
// 目的のプレゼンテーションをロードする
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
    // 最初のスライド内のすべてのシェイプをトラバースする
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // シェイプがSmartArtタイプであるか確認
        if (shape instanceof ISmartArt) 
        {
            // シェイプをSmartArtに型変換
            ISmartArt smart = (ISmartArt) shape;
    
            if (smart.getAllNodes().size() > 0) 
            {
                // インデックス0のSmartArtノードにアクセス
                ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
                // 選択したノードを削除
                smart.getAllNodes().removeNode(node);
            }
        }
    }
    
    // プレゼンテーションを保存
    pres.save("RemoveSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

特定の位置でSmartArtノードを削除する

この例では、特定の位置のSmartArtシェイプ内のノードを削除する方法を学びます。

  1. Presentationクラスのインスタンスを作成し、SmartArtシェイプでプレゼンテーションをロードします。
  2. インデックスを使って最初のスライドの参照を取得します。
  3. 最初のスライド内のすべてのシェイプをトラバースします。
  4. シェイプがSmartArtタイプであるか確認し、SmartArtであれば選択したシェイプをSmartArtに型変換します。
  5. インデックス0のSmartArtシェイプノードを選択します。
  6. 次に、選択したSmartArtノードが2つ以上の子ノードを持っているか確認します。
  7. 位置1でノードを削除し、RemoveNodeメソッドを使用します。
  8. プレゼンテーションを保存します。
// 目的のプレゼンテーションをロードする
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
    // 最初のスライド内のすべてのシェイプをトラバースする
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // シェイプがSmartArtタイプであるか確認
        if (shape instanceof SmartArt) 
        {
            // シェイプをSmartArtに型変換
            SmartArt smart = (SmartArt) shape;
    
            if (smart.getAllNodes().size() > 0) 
            {
                // インデックス0のSmartArtノードにアクセス
                ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
                if (node.getChildNodes().size() >= 2) 
                {
                    // 位置1の子ノードを削除
                    (node.getChildNodes()).removeNode(1);
                }
            }
        }
    }
    
    // プレゼンテーションを保存
    pres.save("RemoveSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

SmartArt内の子ノードのカスタム位置を設定する

Aspose.Slides for Android via Javaでは、SmartArtShapeXおよびYプロパティを設定することがサポートされています。以下のコードスニペットでは、カスタムSmartArtShapeの位置、サイズ、回転を設定する方法を示しています。また、新しいノードを追加すると、すべてのノードの位置とサイズが再計算されることにも注意してください。カスタム位置設定により、ユーザーは要件に応じてノードを設定できます。

// プレゼンテーションクラスをインスタンス化
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try{
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(20, 20, 600, 500, SmartArtLayoutType.OrganizationChart);

    // SmartArtシェイプを新しい位置に移動
    ISmartArtNode node = smart.getAllNodes().get_Item(1);
    ISmartArtShape shape = node.getShapes().get_Item(1);
    shape.setX(shape.getX() + shape.getWidth() * 2);
    shape.setY(shape.getY() - shape.getHeight() * 2);

    // SmartArtシェイプの幅を変更
    node = smart.getAllNodes().get_Item(2);
    shape = node.getShapes().get_Item(1);
    shape.setWidth(shape.getWidth() + shape.getWidth() * 2);

    // SmartArtシェイプの高さを変更
    node = smart.getAllNodes().get_Item(3);
    shape = node.getShapes().get_Item(1);
    shape.setHeight(shape.getHeight() + shape.getHeight() * 2);

    // SmartArtシェイプの回転を変更
    node = smart.getAllNodes().get_Item(4);
    shape = node.getShapes().get_Item(1);
    shape.setRotation(90);

    pres.save("SmartArt.pptx", SaveFormat.Pptx);
}finally {
    pres.dispose();
}

アシスタントノードをチェックする

以下のソースSmartArtシェイプを使って、この記事の異なるセクションで調査を行います。

todo:image_alt_text
図: スライド内のソースSmartArtシェイプ

以下のサンプルコードでは、SmartArtノードコレクション内のアシスタントノードを識別し、それを変更する方法を調査します。

  1. Presentationクラスのインスタンスを作成し、SmartArtシェイプでプレゼンテーションをロードします。
  2. インデックスを使って2番目のスライドの参照を取得します。
  3. 最初のスライド内のすべてのシェイプをトラバースします。
  4. シェイプがSmartArtタイプであるか確認し、SmartArtであれば選択したシェイプをSmartArtに型変換します。
  5. SmartArtシェイプ内のすべてのノードをトラバースし、それらがアシスタントノードかどうかを確認します。
  6. アシスタントノードのステータスを通常のノードに変更します。
  7. プレゼンテーションを保存します。
// プレゼンテーションインスタンスを作成
Presentation pres = new Presentation("AddNodes.pptx");
try {
    // 最初のスライド内のすべてのシェイプをトラバースする
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // シェイプがSmartArtタイプであるか確認
        if (shape instanceof ISmartArt) 
        {
            // シェイプをSmartArtに型変換
            ISmartArt smart = (SmartArt) shape;
    
            // SmartArtシェイプのすべてのノードをトラバース
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                ISmartArtNode node = smart.getAllNodes().get_Item(i);
                // ノードがアシスタントノードか確認
                if (node.isAssistant()) 
                {
                    // アシスタントノードをfalseに設定し、通常のノードにします
                    node.isAssistant();
                }
            }
        }
    }
    
    // プレゼンテーションを保存
    pres.save("ChangeAssitantNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
todo:image_alt_text
図: スライド内のSmartArtシェイプで変更されたアシスタントノード

ノードの塗りつぶし形式を設定する

Aspose.Slides for Android via Javaでは、カスタムSmartArtシェイプを追加し、その塗りつぶし形式を設定することが可能です。このセクションでは、Aspose.Slides for Android via Javaを使用してSmartArtシェイプを作成およびアクセスし、その塗りつぶし形式を設定する方法を説明します。

以下の手順に従ってください。

  1. Presentationクラスのインスタンスを作成します。
  2. インデックスを使ってスライドの参照を取得します。
  3. SmartArtシェイプをLayoutTypeを設定して追加します。
  4. SmartArtシェイプノードのFillFormatを設定します。
  5. 修正したプレゼンテーションをPPTXファイルとして書き込みます。
// プレゼンテーションをインスタンス化
Presentation pres = new Presentation();
try {
    // スライドにアクセス
    ISlide slide = pres.getSlides().get_Item(0);
    
    // SmartArtシェイプとノードを追加
    ISmartArt chevron = slide.getShapes().addSmartArt(10, 10, 800, 60, SmartArtLayoutType.ClosedChevronProcess);
    ISmartArtNode node = chevron.getAllNodes().addNode();
    node.getTextFrame().setText("Some text");
    
    // ノードの塗りつぶし色を設定
    for (IShape item : node.getShapes()) 
    {
        item.getFillFormat().setFillType(FillType.Solid);
        item.getFillFormat().getSolidFillColor().setColor(Color.RED);
    }
    
    // プレゼンテーションを保存
    pres.save("TestSmart.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

SmartArt子ノードのサムネイルを生成する

開発者は、以下の手順に従ってSmartArtの子ノードのサムネイルを生成できます。

  1. Presentationクラスのインスタンスを作成します。
  2. SmartArtを追加します。
  3. インデックスを使ってノードの参照を取得します。
  4. サムネイル画像を取得します。
  5. 任意の画像形式でサムネイル画像を保存します。
// PPTXファイルを表すプレゼンテーションクラスをインスタンス化
Presentation pres = new Presentation();
try {
    // SmartArtを追加
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicCycle);

    // インデックスを使用してノードの参照を取得
    ISmartArtNode node = smart.getNodes().get_Item(1);

    // サムネイルを取得
    IImage slideImage = node.getShapes().get_Item(0).getImage();

    // サムネイルを保存
    try {
          slideImage.save("SmartArt_ChildNote_Thumbnail.png", ImageFormat.Png);
    } finally {
         if (slideImage != null) slideImage.dispose();
    }
} finally {
    if (pres != null) pres.dispose();
}