JavaでPowerPointのSmartArt図形ノードを作成または管理する
Javaを使用してPowerPointプレゼンテーションにSmartArtノードを追加する
Aspose.Slides for Javaは、SmartArt図形を最も簡単な方法で管理するためのシンプルなAPIを提供しています。以下のサンプルコードは、SmartArt図形内にノードと子ノードを追加するのに役立ちます。
- Presentationクラスのインスタンスを作成し、SmartArt図形を含むプレゼンテーションをロードします。
- インデックスを使用して最初のスライドの参照を取得します。
- 最初のスライド内のすべての図形を走査します。
- 図形がSmartArtタイプであるかを確認し、SmartArtである場合は選択した図形をSmartArtに型変換します。
- SmartArt図形のNodeCollectionに新しいノードを追加し、TextFrameにテキストを設定します。
- 次に、新しく追加された子ノードを新たに追加したSmartArtノードに追加し、TextFrameにテキストを設定します。
- プレゼンテーションを保存します。
// 必要なプレゼンテーションをロードする
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("テスト");
// 親ノードに新しい子ノードを追加します。コレクションの末尾に追加されます
SmartArtNode newNode = (SmartArtNode) TemNode.getChildNodes().addNode();
// テキストを追加
newNode.getTextFrame().setText("新しいノードが追加されました");
}
}
// プレゼンテーションを保存
pres.save("AddSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
特定の位置にSmartArtノードを追加する
以下のサンプルコードでは、特定の位置にSmartArt図形のそれぞれのノードに属する子ノードを追加する方法を説明します。
- Presentationクラスのインスタンスを作成します。
- インデックスを使用して最初のスライドの参照を取得します。
- アクセスしたスライドにStackedListタイプのSmartArt図形を追加します。
- 追加したSmartArt図形の最初のノードにアクセスします。
- 現在、選択したノードの位置2に子ノードを追加し、テキストを設定します。
- プレゼンテーションを保存します。
// プレゼンテーションのインスタンスを作成
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);
// インデックス0のSmartArtノードにアクセス
ISmartArtNode node = smart.getAllNodes().get_Item(0);
// 親ノードの位置2に新しい子ノードを追加
SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).addNodeByPosition(2);
// テキストを追加
chNode.getTextFrame().setText("サンプルテキストが追加されました");
// プレゼンテーションを保存
pres.save("AddSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Javaを使用してPowerPointプレゼンテーションのSmartArtノードにアクセスする
以下のサンプルコードは、SmartArt図形内のノードにアクセスするのに役立ちます。SmartArtのレイアウトタイプは読み取り専用であり、SmartArt図形が追加されたときのみ設定されることに注意してください。
- Presentationクラスのインスタンスを作成し、SmartArt図形を含むプレゼンテーションをロードします。
- インデックスを使用して最初のスライドの参照を取得します。
- 最初のスライド内のすべての図形を走査します。
- 図形がSmartArtタイプであるかを確認し、SmartArtである場合は選択した図形をSmartArtに型変換します。
- SmartArt図形内のすべてのノードを走査します。
- SmartArtノードの位置、レベル、テキストの情報をアクセスして表示します。
// Presentationクラスのインスタンス化
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図形のそれぞれのノードに属する子ノードにアクセスするのに役立ちます。
- Presentationクラスのインスタンスを作成し、SmartArt図形を含むプレゼンテーションをロードします。
- インデックスを使用して最初のスライドの参照を取得します。
- 最初のスライド内のすべての図形を走査します。
- 図形がSmartArtタイプであるかを確認し、SmartArtである場合は選択した図形をSmartArtに型変換します。
- SmartArt図形内のすべてのノードを走査します。
- 選択したSmartArt図形のノードのすべての子ノードを特定のノード内で走査します。
- 子ノードの位置、レベル、テキストの情報をアクセスして表示します。
// Presentationクラスのインスタンス化
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 + ", テキスト = " + node.getTextFrame().getText() + ", レベル = " + node.getLevel() + ", 位置 = " + node.getPosition());
}
}
}
}
} finally {
if (pres != null) pres.dispose();
}
特定の位置にSmartArt子ノードにアクセスする
この例では、SmartArt図形のそれぞれのノードに属する特定の位置に子ノードにアクセスする方法を学びます。
- Presentationクラスのインスタンスを作成します。
- インデックスを使用して最初のスライドの参照を取得します。
- StackedListタイプのSmartArt図形を追加します。
- 追加したSmartArt図形にアクセスします。
- アクセスしたSmartArt図形のインデックス0のノードにアクセスします。
- 現在、アクセスポイントにおいて親ノードの位置1で子ノードを**get_Item()**メソッドを使用してアクセスします。
- 子ノードの位置、レベル、テキストの情報をアクセスして表示します。
// プレゼンテーションをインスタンス化
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("テキスト = " + chNode.getTextFrame().getText() + ", レベル = " + chNode.getLevel() + ", 位置 = " + chNode.getPosition());
} finally {
if (pres != null) pres.dispose();
}
JavaでPowerPointプレゼンテーションのSmartArtノードを削除する
この例では、SmartArt図形の内部にノードを削除する方法を学びます。
- Presentationクラスのインスタンスを作成し、SmartArt図形を含むプレゼンテーションをロードします。
- インデックスを使用して最初のスライドの参照を取得します。
- 最初のスライド内のすべての図形を走査します。
- 図形がSmartArtタイプであるかを確認し、SmartArtである場合は選択した図形をSmartArtに型変換します。
- SmartArtが0より多くのノードを持っているか確認します。
- 削除対象のSmartArtノードを選択します。
- 選択したノードをRemoveNodeメソッドを使用して削除します。
- プレゼンテーションを保存します。
// 必要なプレゼンテーションをロードする
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図形の特定の位置にノードを削除する方法を学びます。
- Presentationクラスのインスタンスを作成し、SmartArt図形を含むプレゼンテーションをロードします。
- インデックスを使用して最初のスライドの参照を取得します。
- 最初のスライド内のすべての図形を走査します。
- 図形がSmartArtタイプであるかを確認し、SmartArtである場合は選択した図形をSmartArtに型変換します。
- インデックス0のSmartArt形状ノードを選択します。
- 選択したSmartArtノードが2つ以上の子ノードを持っているか確認します。
- RemoveNodeメソッドを使用して位置1のノードを削除します。
- プレゼンテーションを保存します。
// 必要なプレゼンテーションをロードする
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 Javaは、SmartArtShapeのXおよびYプロパティの設定をサポートします。以下のコードスニペットは、カスタムSmartArtShapeの位置、サイズ、回転を設定する方法を示しています。また、新しいノードを追加すると、すべてのノードの位置とサイズの再計算が発生することに注意してください。また、カスタム位置設定を使用すると、ユーザーは要件に応じてノードを設定できます。
// Presentationクラスのインスタンスを作成
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図形を使用して、この記事の異なるセクションで調査を行います。
図: スライド内のソースSmartArt図形 |
以下のサンプルコードでは、SmartArtノードコレクション内のアシスタントノードを特定し、それを変更する方法を調査します。
- Presentationクラスのインスタンスを作成し、SmartArt図形を含むプレゼンテーションをロードします。
- インデックスを使用して2番目のスライドの参照を取得します。
- 最初のスライド内のすべての図形を走査します。
- 図形がSmartArtタイプであるかを確認し、SmartArtである場合は選択した図形をSmartArtに型変換します。
- SmartArt図形内のすべてのノードを走査し、それらがアシスタントノードであるかを確認します。
- アシスタントノードの状態を通常のノードに変更します。
- プレゼンテーションを保存します。
// プレゼンテーションのインスタンスを作成
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();
}
図: SmartArt図形内のアシスタントノードが変更されました |
ノードの塗りつぶし形式を設定する
Aspose.Slides for Javaを使用すると、カスタムSmartArt図形を追加し、その塗りつぶし形式を設定できます。この記事では、Aspose.Slides for Javaを使用してSmartArt図形を作成し、アクセスし、塗りつぶし形式を設定する方法について説明します。
以下の手順に従ってください。
- Presentationクラスのインスタンスを作成します。
- インデックスを使用してスライドの参照を取得します。
- SmartArt図形を追加し、そのLayoutTypeを設定します。
- SmartArt図形ノードのFillFormatを設定します。
- 修正されたプレゼンテーションを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("テキストの一部");
// ノードの塗りつぶし色を設定
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の子ノードのサムネイルを生成できます。
- Presentationクラスのインスタンスを作成します。
- SmartArtを追加します。
- インデックスを使用してノードの参照を取得します。
- サムネイル画像を取得します。
- 任意の形式でサムネイル画像を保存します。
// PPTXファイルを表すPresentationクラスをインスタンス化
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();
}