Hantera SmartArt i PowerPoint-presentationer med JavaScript
Översikt
SmartArt är ett PowerPoint‑diagram bestående av noder, nodformer och en layout. Med Aspose.Slides för Node.js via Java kan du skapa SmartArt, läsa text från dess noder, ändra dess layout, inspektera dolda noder, konfigurera organisationsdiagramlayout och skapa bildorganisationsdiagram.
Hämta text från ett SmartArt‑objekt
En SmartArt‑nod kan innehålla en eller flera former. För att läsa text från nodformerna, iterera genom SmartArt.getAllNodes, läs sedan TextFrame som returneras av SmartArtShape.getTextFrame.
Exemplet kräver en presentation med minst en bild och ett SmartArt‑objekt som den första formen på den bilden. Det skriver ut varje tillgänglig textram till konsolen.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
let presentation = new aspose.slides.Presentation("sample.pptx");
try {
let slide = presentation.getSlides().get_Item(0);
let shape = slide.getShapes().get_Item(0);
if (java.instanceOf(shape, "com.aspose.slides.ISmartArt")) {
let smartArt = shape;
let nodes = smartArt.getAllNodes();
for (let nodeIndex = 0; nodeIndex < nodes.size(); nodeIndex++) {
let node = nodes.get_Item(nodeIndex);
let nodeShapes = node.getShapes();
for (let shapeIndex = 0; shapeIndex < nodeShapes.size(); shapeIndex++) {
let nodeShape = nodeShapes.get_Item(shapeIndex);
if (nodeShape.getTextFrame() != null) {
console.log(nodeShape.getTextFrame().getText());
}
}
}
} else {
console.log("The first shape is not a SmartArt object.");
}
} finally {
presentation.dispose();
}
Ändra layouttypen för ett SmartArt‑objekt
SmartArt‑layouten styr hur noder ordnas och kopplas ihop. Följande exempel skapar ett SmartArt‑objekt med SmartArtLayoutType BasicBlockList‑värdet, ändrar det till värdet BasicProcess och sparar presentationen. Positionen och storleken som skickas till ShapeCollection.addSmartArt anges i punkter. Använd SmartArt.setLayout för att ändra layouten.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
let presentation = new aspose.slides.Presentation();
try {
let slide = presentation.getSlides().get_Item(0);
let smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.BasicBlockList);
smartArt.setLayout(aspose.slides.SmartArtLayoutType.BasicProcess);
presentation.save("ChangeSmartArtLayout.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Kontrollera om en SmartArt‑nod är dold
SmartArtNode.isHidden indikerar om noden är dold i SmartArt‑datamodellen. Dolda noder kan finnas i strukturen även när den valda layouten inte visar dem som synliga diagramelement.
Följande exempel lägger till en nod i ett SmartArt‑objekt som använder SmartArtLayoutType RadialCycle‑värdet och kontrollerar den tillagda nodens dolda tillstånd. Det skriver ut ett meddelande om noden är dold och sparar diagrammet.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
let presentation = new aspose.slides.Presentation();
try {
let slide = presentation.getSlides().get_Item(0);
let smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.RadialCycle);
let node = smartArt.getAllNodes().addNode();
let isHidden = node.isHidden();
if (isHidden) {
console.log("The node is hidden in the SmartArt data model.");
}
presentation.save("CheckSmartArtHiddenProperty.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Hämta eller ange organisationsdiagramlayout
För SmartArt‑diagram som använder en organisationsdiagramlayout definierar SmartArtNode.getOrganizationChartLayout och SmartArtNode.setOrganizationChartLayout hur undernoder ordnas under en föräldranod. Till exempel kan du ställa in att undernoder hänger från vänster, höger eller båda sidor, beroende på den valda OrganizationChartLayoutType.
Följande exempel skapar ett organisationsdiagram och ställer in layouten för den första noden till OrganizationChartLayoutType LeftHanging‑värdet. Nollbaserade indexet 0 väljer den första top‑nivå noden; dess undernoder använder den valda ordningen. Den modifierade presentationen sparas sedan.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
let presentation = new aspose.slides.Presentation();
try {
let slide = presentation.getSlides().get_Item(0);
let smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.OrganizationChart);
let rootNode = smartArt.getNodes().get_Item(0);
rootNode.setOrganizationChartLayout(aspose.slides.OrganizationChartLayoutType.LeftHanging);
presentation.save("OrganizationChartLayout.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Skapa ett bildorganisationsdiagram
Ett bildorganisationsdiagram är en SmartArt‑layout avsedd för hierarkidiagram som innehåller bildplatshållare. Använd SmartArtLayoutType PictureOrganizationChart‑värdet när du lägger till SmartArt‑objektet på en bild. Detta exempel sparar ett diagram med bildplatshållare; det fyller inte i platshållarna med bilder.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
let presentation = new aspose.slides.Presentation();
try {
let slide = presentation.getSlides().get_Item(0);
let smartArt = slide.getShapes().addSmartArt(0, 0, 400, 400, aspose.slides.SmartArtLayoutType.PictureOrganizationChart);
presentation.save("PictureOrganizationChart.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Konvertera äldre diagram till grupper av former
När du moderniserar en befintlig presentation kan du behöva uppdatera ett organisationsdiagram som ursprungligen skapades i PowerPoint 97–2003. Aspose.Slides representerar dessa äldre diagram som LegacyDiagram‑objekt. Använd LegacyDiagram.convertToGroupShape för att konvertera ett diagram till en grupp av former så att du kan redigera enskilda visuella element. Se LegacyDiagram API Reference för detaljer.
Konverteringen lägger till en ny grupp i formkollektionen utan att ta bort det ursprungliga diagrammet. Efter lyckad konvertering, ta bort originalet med ShapeCollection.remove för att undvika duplicerat innehåll. Samla de äldre diagrammen i en lista innan du konverterar dem så att tillägg och borttagning av former inte stör iterationen.
Följande exempel öppnar en presentation, söker igenom varje bild, konverterar diagrammen till grupper av former och sparar den uppdaterade presentationen som PPTX.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
let presentation = new aspose.slides.Presentation("legacy-diagrams.ppt");
try {
let slides = presentation.getSlides();
for (let slideIndex = 0; slideIndex < slides.size(); slideIndex++) {
let slide = slides.get_Item(slideIndex);
let shapes = slide.getShapes();
let legacyDiagrams = [];
for (let shapeIndex = 0; shapeIndex < shapes.size(); shapeIndex++) {
let shape = shapes.get_Item(shapeIndex);
if (java.instanceOf(shape, "com.aspose.slides.ILegacyDiagram")) {
legacyDiagrams.push(shape);
}
}
for (let legacyDiagram of legacyDiagrams) {
let groupShape = legacyDiagram.convertToGroupShape();
if (groupShape != null) {
shapes.remove(legacyDiagram);
}
}
}
presentation.save("modernized.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Den sparade presentationen innehåller redigerbara grupper av former i stället för de konverterade äldre diagrammen, utan några originaldiagram kvar bredvid dem. Öppna PPTX‑filen i PowerPoint för att redigera enskilda element i varje grupp, såsom deras text, fyllning eller position.
FAQ
Stöder SmartArt spegling eller omvändning för RTL‑språk?
Ja. Metoden SmartArt.setReversed byter diagramriktning från vänster‑till‑höger till höger‑till‑vänster, eller tillbaka, när den valda SmartArt‑layouten stöder omvändning.
Hur kan jag kopiera SmartArt till samma bild eller till en annan presentation samtidigt som formateringen bevaras?
Du kan klona SmartArt‑formen med ShapeCollection.addClone eller klona hela bilden som innehåller SmartArt. Båda metoderna bevarar storlek, position och formatering.
Hur renderar jag SmartArt till en rasterbild för förhandsgranskning eller webbutlåtelse?
Rendera bilden eller hela presentationen till PNG eller JPEG. SmartArt renderas som en del av bilden.
Hur hittar jag ett specifikt SmartArt‑objekt på en bild om det finns flera?
Använd Shape.setAlternativeText eller Shape.setName för att tilldela en unik alternativtext eller namn till SmartArt‑formen, sök efter det värdet i BaseSlide.getShapes, och verifiera sedan att den matchande formen är en SmartArt.