Sådan tilføjer du former til PowerPoint i Java
Aspose.Slides FOSS for Java understøtter at tilføje AutoShapes, Tables, Connectors og PictureFrames til præsentationsslides. Alle formtyper tilføjes gennem slide.getShapes()-samlingen.
Trin-for-trin Guide
Trin 1: Tilføj Maven-afhængigheden
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Trin 2: Opret en præsentation
Brug altid try-with-resources til at håndtere ressourcer.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
// ... add shapes ...
prs.save("output.pptx", SaveFormat.PPTX);
}Trin 3: Tilføj en AutoShape
slide.getShapes().addAutoShape(shapeType, x, y, width, height) placerer en form på den angivne position og størrelse (alle i point). Brug ShapeType konstanter til at vælge formen.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
// Rectangle
IAutoShape rect = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 300, 100
);
rect.addTextFrame("Rectangle shape");
// Ellipse
IAutoShape ellipse = slide.getShapes().addAutoShape(
ShapeType.ELLIPSE, 400, 50, 200, 100
);
ellipse.addTextFrame("Ellipse shape");
prs.save("autoshapes.pptx", SaveFormat.PPTX);
}Trin 4: Tilføj en tabel
slide.getShapes().addTable(x, y, colWidths, rowHeights) opretter en tabel på den angivne position. Kolonnebredder og rækkehøjder er arrays af punktværdier.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
double[] colWidths = {150.0, 150.0, 150.0};
double[] rowHeights = {40.0, 40.0, 40.0};
ITable table = slide.getShapes().addTable(50, 200, colWidths, rowHeights);
// Set header row text
String[] headers = {"Product", "Units", "Revenue"};
for (int col = 0; col < headers.length; col++) {
table.getRows().get(0).get(col).getTextFrame().setText(headers[col]);
}
// Set data rows
String[][] rows = {
{"Widget A", "120", "$2,400"},
{"Widget B", "85", "$1,700"},
};
for (int row = 0; row < rows.length; row++) {
for (int col = 0; col < rows[row].length; col++) {
table.getRows().get(row + 1).get(col)
.getTextFrame().setText(rows[row][col]);
}
}
prs.save("table.pptx", SaveFormat.PPTX);
}Trin 5: Tilføj en connector
Forbindelser forbinder to former visuelt. Opret først formerne, tilføj derefter en forbindelse og indstil dens start- og slutforbindelsespunkter.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape box1 = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 100, 150, 60
);
box1.addTextFrame("Start");
IAutoShape box2 = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 350, 100, 150, 60
);
box2.addTextFrame("End");
IConnector conn = slide.getShapes().addConnector(
ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10
);
conn.setStartShapeConnectedTo(box1);
conn.setStartShapeConnectionSiteIndex(3); // right side of box1
conn.setEndShapeConnectedTo(box2);
conn.setEndShapeConnectionSiteIndex(1); // left side of box2
prs.save("connector.pptx", SaveFormat.PPTX);
}Forbindelsesstedindekser er nummereret 0‑3 for en rektangel: top=0, venstre=1, bund=2, højre=3.
Trin 6: Tilføj en billedramme
Indlejr et billede og tilføj det til sliden som en PictureFrame. Læs billedbytes først, tilføj dem til præsentationens billedsamling, og opret derefter rammen.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Paths;
try (Presentation prs = new Presentation()) {
byte[] imageData = Files.readAllBytes(Paths.get("logo.png"));
IPPImage image = prs.getImages().addImage(imageData);
ISlide slide = prs.getSlides().get(0);
slide.getShapes().addPictureFrame(
ShapeType.RECTANGLE, // bounding shape type
50, 50, // x, y in points
200, 150, // width, height in points
image
);
prs.save("with-image.pptx", SaveFormat.PPTX);
}Almindelige problemer og rettelser
Formen vises uden for det synlige slide-området
Dias er som standard 720 × 540 punkter. Værdier af x eller y uden for disse grænser placerer formen uden for diaset. Behold x < 720 og y < 540, og sørg for x + width <= 720 og y + height <= 540.
NullPointerException ved læsning af formtekst
addAutoShape() returnerer shape‑objektet direkte. Hvis du ser null, så tjek at du ikke kasserer returværdien. Bekræft også, at getTextFrame() ikke er null, før du læser teksten.
Tabelcelletekst er tom efter tildeling
Den korrekte metode er .getTextFrame().setText(value). Få adgang til celler som table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").
Ofte stillede spørgsmål
Hvor mange former kan jeg tilføje til et dias?
Der er ingen bibliotekspålagt grænse. Praktiske grænser afhænger af filstørrelsen og gengivelseskapaciteten i din mål‑PPTX‑fremviser.
Kan jeg ændre en formes position efter at have tilføjet den?
Ja. Formobjektet, der returneres af addAutoShape(), har positions‑ og størrelsesejendomme via getShapeFrame().
Er diagrammer understøttet?
Nej. Diagrammer, SmartArt og OLE‑objekter er ikke implementeret i denne udgave og udløser UnsupportedOperationException.