SmartArt in PowerPoint-Präsentationen auf Android verwalten
Übersicht
SmartArt ist ein PowerPoint-Diagramm, das aus Knoten, Knotformen und einem Layout besteht. Mit Aspose.Slides für Android über Java können Sie SmartArt erstellen, Text aus seinen Knoten lesen, das Layout ändern, versteckte Knoten untersuchen, Organisationsdiagramm‑Layouts konfigurieren und Bild‑Organisationsdiagramme erstellen.
Text aus einem SmartArt-Objekt abrufen
Ein SmartArt‑Knoten kann ein oder mehrere Shapes enthalten. Um Text aus den Knot‑Shapes zu lesen, iterieren Sie über ISmartArt.getAllNodes, und lesen dann das über ISmartArtShape.getTextFrame zurückgegebene ITextFrame.
Das Beispiel erfordert eine Präsentation mit mindestens einer Folie und einem SmartArt‑Objekt als erstes Shape auf dieser Folie. Es gibt jeden verfügbaren Textframe in der Konsole aus.
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = (ISmartArt) slide.getShapes().get_Item(0);
for (ISmartArtNode node : smartArt.getAllNodes()) {
for (ISmartArtShape nodeShape : node.getShapes()) {
if (nodeShape.getTextFrame() != null) {
System.out.println(nodeShape.getTextFrame().getText());
}
}
}
} finally {
presentation.dispose();
}
Typ des Layouts eines SmartArt-Objekts ändern
Das SmartArt‑Layout bestimmt, wie Knoten angeordnet und verbunden werden. Das folgende Beispiel erstellt ein SmartArt‑Objekt mit dem SmartArtLayoutType‑Wert BasicBlockList, ändert ihn auf den Wert BasicProcess und speichert die Präsentation. Die an IShapeCollection.addSmartArt übergebenen Position und Größe werden in Punkten angegeben. Verwenden Sie ISmartArt.setLayout, um das Layout zu ändern.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicBlockList);
smartArt.setLayout(SmartArtLayoutType.BasicProcess);
presentation.save("ChangeSmartArtLayout.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Überprüfen, ob ein SmartArt‑Knoten ausgeblendet ist
ISmartArtNode.isHidden gibt an, ob der Knoten im SmartArt‑Datenmodell ausgeblendet ist. Ausgeblendete Knoten können in der Struktur existieren, selbst wenn das ausgewählte Layout sie nicht als sichtbare Diagrammelemente darstellt.
Das folgende Beispiel fügt einem SmartArt‑Objekt, das den SmartArtLayoutType‑Wert RadialCycle verwendet, einen Knoten hinzu und prüft den ausgeblendeten Zustand des hinzugefügten Knotens. Es gibt eine Meldung aus, wenn der Knoten ausgeblendet ist, und speichert das Diagramm.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.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.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Organisationsdiagramm‑Layout abrufen oder festlegen
Für SmartArt‑Diagramme, die ein Organisationsdiagramm‑Layout verwenden, definieren ISmartArtNode.getOrganizationChartLayout und ISmartArtNode.setOrganizationChartLayout, wie Kindknoten unter einem Elternknoten angeordnet werden. Beispielsweise können Sie Kindknoten links, rechts oder an beiden Seiten hängen lassen, abhängig vom ausgewählten OrganizationChartLayoutType.
Das folgende Beispiel erstellt ein Organisationsdiagramm und legt das Layout für den ersten Knoten auf den OrganizationChartLayoutType‑Wert LeftHanging fest. Der nullbasierte Index 0 wählt den ersten Knoten der obersten Ebene aus; seine Kindknoten verwenden die ausgewählte Anordnung. Die modifizierte Präsentation wird anschließend gespeichert.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.OrganizationChart);
ISmartArtNode rootNode = smartArt.getNodes().get_Item(0);
rootNode.setOrganizationChartLayout(OrganizationChartLayoutType.LeftHanging);
presentation.save("OrganizationChartLayout.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Ein Bild‑Organisationsdiagramm erstellen
Ein Bild‑Organisationsdiagramm ist ein SmartArt‑Layout, das für Hierarchiediagramme mit Bild‑Platzhaltern konzipiert ist. Verwenden Sie beim Hinzufügen des SmartArt‑Objekts zu einer Folie den SmartArtLayoutType‑Wert PictureOrganizationChart. Dieses Beispiel speichert ein Diagramm mit Bild‑Platzhaltern; es füllt die Platzhalter nicht mit Bildern.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.PictureOrganizationChart);
presentation.save("PictureOrganizationChart.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Legacy‑Diagramme in Shape‑Gruppen konvertieren
Beim Modernisieren einer bestehenden Präsentation müssen Sie möglicherweise ein Organisationsdiagramm aktualisieren, das ursprünglich in PowerPoint 97‑2003 erstellt wurde. Aspose.Slides stellt diese Legacy‑Diagramme als ILegacyDiagram‑Objekte dar. Verwenden Sie LegacyDiagram.convertToGroupShape, um ein Diagramm in eine Shape‑Gruppe zu konvertieren, sodass Sie einzelne Bildelemente bearbeiten können. Die Details finden Sie in der LegacyDiagram API Reference.
Die Konvertierung fügt der Shape‑Sammlung eine neue Gruppe hinzu, ohne das ursprüngliche Diagramm zu entfernen. Entfernen Sie nach erfolgreicher Konvertierung das Original mit IShapeCollection.remove , um doppelte Inhalte zu vermeiden. Sammeln Sie die Legacy‑Diagramme in einer Liste, bevor Sie sie konvertieren, damit das Hinzufügen und Entfernen von Shapes die Iteration nicht stört.
Das folgende Beispiel öffnet eine Präsentation, durchsucht jede Folie, konvertiert die Diagramme in Shape‑Gruppen und speichert die aktualisierte Präsentation als PPTX.
import com.aspose.slides.*;
import java.util.ArrayList;
import java.util.List;
Presentation presentation = new Presentation("legacy-diagrams.ppt");
try {
for (ISlide slide : presentation.getSlides()) {
List<ILegacyDiagram> legacyDiagrams = new ArrayList<>();
for (IShape shape : slide.getShapes()) {
if (shape instanceof ILegacyDiagram) {
legacyDiagrams.add((ILegacyDiagram) shape);
}
}
for (ILegacyDiagram legacyDiagram : legacyDiagrams) {
IGroupShape groupShape = legacyDiagram.convertToGroupShape();
if (groupShape != null) {
slide.getShapes().remove(legacyDiagram);
}
}
}
presentation.save("modernized.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Die gespeicherte Präsentation enthält bearbeitbare Shape‑Gruppen anstelle der konvertierten Legacy‑Diagramme, wobei keine Originaldiagramme mehr vorhanden sind. Öffnen Sie die PPTX in PowerPoint, um einzelne Elemente innerhalb jeder Gruppe zu bearbeiten, z. B. deren Text, Füllung oder Position.
FAQ
Unterstützt SmartArt das Spiegeln oder Umkehren für RTL‑Sprachen?
Ja. Die Methode ISmartArt.setReversed wechselt die Diagrammrichtung von links‑nach‑rechts zu rechts‑nach‑links bzw. zurück, wenn das ausgewählte SmartArt‑Layout die Umkehrung unterstützt.
Wie kann ich SmartArt auf derselben Folie oder in einer anderen Präsentation kopieren und dabei die Formatierung beibehalten?
Sie können die SmartArt‑Form mit die SmartArt‑Form klonen und ShapeCollection.addClone klonen oder die gesamte Folie mit die gesamte Folie klonen klonen, die die SmartArt enthält. Beide Ansätze erhalten Größe, Position und Formatierung.
Wie rendere ich SmartArt zu einem Rasterbild für Vorschau oder Web‑Export?
Rendern Sie die Folie mit die Folie rendern oder die gesamte Präsentation zu PNG oder JPEG. SmartArt wird als Teil der Folie gerendert.
Wie kann ich ein bestimmtes SmartArt‑Objekt auf einer Folie finden, wenn mehrere vorhanden sind?
Verwenden Sie Shape.setAlternativeText oder Shape.setName, um dem SmartArt‑Shape einen eindeutigen Alternativtext oder Namen zuzuweisen, suchen Sie diesen Wert in BaseSlide.getShapes, und prüfen Sie anschließend, ob das gefundene Shape ein ISmartArt.