כיצד להוסיף צורות ל-PowerPoint ב-Java
Aspose.Slides FOSS for Java תומך בהוספת AutoShapes, Tables, Connectors ו-PictureFrames לשקופיות מצגת. כל סוגי הצורות מתווספים דרך האוסף slide.getShapes().
מדריך שלב‑אחר‑שלב
שלב 1: הוסף את תלות Maven
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>שלב 2: צור מצגת
תמיד השתמש ב‑try-with-resources כדי לנהל משאבים.
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. קרא תחילה את בייטי התמונה, הוסף אותם לאוסף התמונות של המצגת, ואז צור את המסגרת.
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);
}בעיות נפוצות ותיקונים
הצורה מופיעה מחוץ לאזור השקופית הגלוי
המצגות הן 720 × 540 נקודות כברירת מחדל. ערכים של x או y שמעבר לגבולות אלה מציבים את הצורה מחוץ לשקף. שמור את x < 720 ו‑y < 540, והבטח את x + width <= 720 ו‑y + height <= 540.
NullPointerException כאשר קוראים טקסט של צורה
addAutoShape() מחזיר את אובייקט הצורה ישירות. אם אתה רואה null, בדוק שאינך מזניב את ערך ההחזרה. כמו כן, וודא ש-getTextFrame() אינו null לפני קריאת הטקסט.
טקסט תא בטבלה ריק לאחר ההקצאה
השיטה הנכונה היא .getTextFrame().setText(value). גש לתאים כ table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").
שאלות נפוצות
כמה צורות ניתן להוסיף לשקופית?
אין מגבלה שמוטלת על ידי הספרייה. המגבלות המעשיות תלויות בגודל הקובץ וביכולת הרינדור של מציג ה‑PPTX היעד שלך.
האם ניתן לשנות את מיקום הצורה לאחר שהוספתי אותה?
כן. האובייקט shape המוחזר על ידי addAutoShape() כולל תכונות מיקום וגודל דרך getShapeFrame().
האם גרפים נתמכים?
לא. תרשימים, SmartArt, ואובייקטי OLE אינם מיושמים בגרסה זו ומחזירים UnsupportedOperationException.