Wie man in PowerPoint Formen hinzufügt
Aspose.Slides FOSS for Java supports adding AutoShapes, Tables, Connectors, and PictureFrames to presentation slides. All shape types are added through the slide.getShapes() Sammlung.
Schritt für Schritte
Schritt 1: Hinzufügen der Maven-Abhängigkeit
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>26.7.0</version>
</dependency>Schritt 2: Erstellen Sie eine Präsentation
Verwenden Sie immer Versuche mit Ressourcen, um Ressource zu verwalten.
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);
}Schritt 3: Ein AutoShape hinzufügen
slide.getShapes().addAutoShape(shapeType, x, y, width, height) Die Verwendung von “System” ist nicht unbedingt erforderlich. ShapeType Konstanten zur Auswahl der Form.
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);
}Schritt 4: Ein Tabelle hinzufügen
slide.getShapes().addTable(x, y, colWidths, rowHeights) Die Spaltenbreiten und Zeilenhöhen sind Arrays von Punktwerten.
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);
}Schritt 5: Hinzufügen eines Anschlusses
Die Anschlüsse verbinden zwei Formen visuell. Erstellen Sie die Forme zuerst, fügen Sie dann einen Ansprechpartner hinzu und setzen Sie seine Start- und Endverbindungspunkte fest.
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);
}Die Verbindungsstandorte sind für ein Rechteck 0-3 nummeriert: oben = 0, links = 1, unten = 2, rechts = 3.
Schritt 6: Ein Bildrahmen hinzufügen
Einbinden eines Bildes und fügen Sie es als ein Slide hinzu. PictureFrame.Lesen Sie die Bildbyte zuerst, fügen sie in die Bilderkollektion der Präsentation hinzu und erstellen Sie dann den Rahmen.
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);
}Häufige Probleme und Lösungen
Form erscheint außerhalb des sichtbaren Schiebetreffs.
Die Bilder sind standardmäßig 720 x 540 Punkte. x oder y Über diese Grenzen hinaus, legen Sie die Form abseits der Folie. x < 720 und . y < 540, und gewährleisten, dass die x + width <= 720 und . y + height <= 540.
NullPointerException beim Lesen von Formtext
addAutoShape() Wir haben eine neue Form, die das Objekt direkt zurückgibt. null, überprüfen, dass Sie nicht den Wert zurückwerfen. Auch prüfen getTextFrame() ist nicht null vor dem Lesen des Textes.
Tabellenzellentext nach Zuweisung leer .
Die richtige Methode ist: .getTextFrame().setText(value).Zellen als . table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").
Häufig gestellte Fragen
Wie viele Formen kann ich einer Folie hinzufügen?
Es gibt keine Bibliotheksgrenze. Praktische Grenzen hängen von der Dateigröße und den Rendering-Fähigkeiten des Ziel-PPTX Viewers ab.
Kann ich die Position einer Form ändern, nachdem ich sie hinzugefügt habe?
Ja, das von der Schreibmaschine zurückgegebene Objekt hat eine Form. addAutoShape() hat Position und Größe Eigenschaften über getShapeFrame().
Werden Diagramme unterstützt?
Nein. Diagramme, SmartArt und OLE-Objekte werden in dieser Ausgabe nicht implementiert und erhöhen die UnsupportedOperationException.