Πώς να προσθέσετε σχήματα στο PowerPoint στην Java
Aspose.Slides FOSS for Java supports adding AutoShapes, Tables, Connectors, and PictureFrames to presentation slides. All shape types are added through the slide.getShapes() συλλογή .
Βήμα προς βήμα οδηγός
Βήμα 1: Προσθέστε την εξάρτηση Maven
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>26.7.0</version>
</dependency>Βήμα 2: Δημιουργήστε μια παρουσίαση
Πάντα χρησιμοποιήστε try-with πόρους για τη διαχείριση των πόρων.
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);
}Βήμα 3: Προσθέστε ένα AutoShape
slide.getShapes().addAutoShape(shapeType, x, y, width, height) τοποθετείτε μια μορφή στη συγκεκριμένη θέση και το μέγεθος (όλα σε σημεία). ShapeType Συνεχώς επιλέξτε τη μορφή.
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);
}Βήμα 4: Προσθέστε ένα τραπέζι
slide.getShapes().addTable(x, y, colWidths, rowHeights) δημιουργεί έναν πίνακα στη συγκεκριμένη θέση. πλάτος στήλης και ύψος γραμμών είναι ρίζες τιμών σημείων.
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);
}Βήμα 5: Προσθέστε ένα σύνδεσμο
Συνδέσεις συνδέουν δύο μορφές οπτικά. Δημιουργήστε τις μορφές πρώτα, στη συνέχεια προσθέστε ένα σύνδεσμο και ορίστε τα σημεία εκκίνησης και τερματισμού της σύνδέσμου.
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);
}Οι δείκτες τοποθεσίας σύνδεσης αριθμούνται 0-3 για έναν ορθό γωνίο: πάνω = 0, αριστερά = 1, κάτω = 2, δεξιά = 3.
Βήμα 6: Προσθήκη ενός πίνακα εικόνας
Εισάγετε μια εικόνα και προσθέστε την στο σκιτ ως ένα PictureFrame.Διαβάστε πρώτα τα byte εικόνας, προσθέστε αυτά στη συλλογή εικόνων της παρουσίασης και στη συνέχεια δημιουργήστε το πλαίσιο.
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);
}Κοινά προβλήματα και τακτοποιήσεις
Η μορφή εμφανίζεται έξω από την ορατή περιοχή της σκιής
Τα Slides είναι 720 x 540 σημεία ανά προεπιλογή. x ή y πέρα από αυτά τα όρια τοποθετείται η μορφή off-slide. x < 720 και y < 540,και να εξασφαλίσει x + width <= 720 και y + height <= 540.
NullPointerException Όταν διαβάζετε το κείμενο σχήματος
addAutoShape() επιστρέφει το αντικείμενο σχήματος απευθείας. αν δείτε null, βεβαιωθείτε ότι δεν απορρίπτει την αξία επιστροφής.Επίσης επαληθεύστε getTextFrame() Δεν είναι μηδέν πριν από την ανάγνωση του κειμένου.
Το κείμενο του πίνακα κελί είναι άδειο μετά την αποστολή
Η σωστή μέθοδος είναι .getTextFrame().setText(value).Η πρόσβαση στα κύτταρα ως table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").
Συχνές ερωτήσεις
Πόσες μορφές μπορώ να προσθέσω σε ένα σκι;?
Πρακτικά όρια εξαρτώνται από το μέγεθος του αρχείου και την ικανότητα rendering του στόχου σας PPTX προβολέας.
Μπορώ να αλλάξω τη θέση μιας μορφής μετά την προσθήκη της;?
Το αντικείμενο σχήματος που επιστρέφει από το addAutoShape() έχει τοποθεσία και μέγεθος ιδιότητες μέσω getShapeFrame().
Οι πίνακες υποστηρίζονται;?
Οι πίνακες, τα SmartArt και τα αντικείμενα OLE δεν εφαρμόζονται σε αυτή την έκδοση και αναρτώνται. UnsupportedOperationException.