Hoe vormen toe te voegen aan PowerPoint in Java
Aspose.Slides FOSS for Java ondersteunt het toevoegen van AutoShapes, Tables, Connectors en PictureFrames aan presentatieslides. Alle vormtypen worden toegevoegd via de slide.getShapes()-collectie.
Stapsgewijze handleiding
Stap 1: Voeg de Maven-afhankelijkheid toe
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Stap 2: Maak een presentatie
Gebruik altijd try-with-resources om resources te beheren.
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);
}Stap 3: Voeg een AutoShape toe
slide.getShapes().addAutoShape(shapeType, x, y, width, height) plaatst een vorm op de opgegeven positie en grootte (allemaal in punten). Gebruik ShapeType constanten om de vorm te selecteren.
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);
}Stap 4: Voeg een tabel toe
slide.getShapes().addTable(x, y, colWidths, rowHeights) maakt een tabel op de opgegeven positie. Kolombreedtes en rijhoogtes zijn arrays van puntwaarden.
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);
}Stap 5: Voeg een connector toe
Connectoren koppelen twee vormen visueel. Maak eerst de vormen, voeg vervolgens een connector toe en stel de start‑ en eindkoppelingspunten in.
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);
}Connectieplaatsindices worden genummerd 0‑3 voor een rechthoek: top=0, left=1, bottom=2, right=3.
Stap 6: Voeg een fotolijst toe
Voeg een afbeelding in en voeg deze toe aan de dia als een PictureFrame. Lees eerst de afbeeldingsbytes, voeg ze toe aan de afbeeldingscollectie van de presentatie en maak vervolgens het frame.
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);
}Veelvoorkomende problemen en oplossingen
Vorm verschijnt buiten het zichtbare dia‑gebied
Dia’s zijn standaard 720 × 540 punten. Waarden van x of y buiten die grenzen plaatsen de vorm buiten de dia. Bewaar x < 720 en y < 540, en zorg ervoor dat x + width <= 720 en y + height <= 540.
NullPointerException bij het lezen van vormtekst
addAutoShape() retourneert het shape‑object direct. Als je null ziet, controleer dan of je de retourwaarde niet weggooit. Controleer ook of getTextFrame() niet null is voordat je de tekst leest.
Tabelceltekst is leeg na toewijzing
De juiste methode is .getTextFrame().setText(value). Toegang tot cellen als table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").
Veelgestelde vragen
Hoeveel vormen kan ik aan een dia toevoegen?
Er is geen door de bibliotheek opgelegde limiet. Praktische limieten hangen af van de bestandsgrootte en de renderingscapaciteit van uw doel‑PPTX‑viewer.
Kan ik de positie van een vorm wijzigen nadat ik deze heb toegevoegd?
Ja. Het shape-object dat wordt geretourneerd door addAutoShape() heeft positie‑ en grootte‑eigenschappen via getShapeFrame().
Zijn grafieken ondersteund?
Nee. Grafieken, SmartArt en OLE‑objecten zijn niet geïmplementeerd in deze editie en veroorzaken UnsupportedOperationException.