Kako dodati oblike u PowerPoint u Javi
Aspose.Slides FOSS for Java podržava dodavanje AutoShapes, Tables, Connectors i PictureFrames na slajdove prezentacije. Sve vrste oblika se dodaju kroz slide.getShapes() kolekciju.
Vodič korak po korak
Korak 1: Dodajte Maven zavisnost
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Korak 2: Kreirajte prezentaciju
Uvek koristite try-with-resources za upravljanje resursima.
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);
}Korak 3: Dodajte AutoShape
slide.getShapes().addAutoShape(shapeType, x, y, width, height) postavlja oblik na zadatu poziciju i veličinu (sve u tačkama). Koristite ShapeType konstante da izaberete oblik.
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);
}Korak 4: Dodajte tabelu
slide.getShapes().addTable(x, y, colWidths, rowHeights) kreira tabelu na navedenoj poziciji. Širine kolona i visine redova su nizovi vrednosti u tačkama.
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);
}Korak 5: Dodaj konektor
Konektori vizuelno povezuju dva oblika. Prvo kreirajte oblike, zatim dodajte konektor i postavite njegove početne i krajnje tačke povezivanja.
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);
}Indeksi tačaka povezivanja su numerisani od 0 do 3 za pravougaonik: top=0, left=1, bottom=2, right=3.
Korak 6: Dodajte okvir za sliku
Umetnite sliku i dodajte je na slajd kao PictureFrame. Prvo pročitajte bajtove slike, dodajte ih u kolekciju slika prezentacije, a zatim kreirajte okvir.
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);
}Уобичајени проблеми и решења
Oblik se pojavljuje izvan vidljivog područja slajda
Slajdovi su po defaultu 720 × 540 poena. Vrednosti x ili y izvan tih granica postavljaju oblik van slajda. Zadržite x < 720 i y < 540, i osigurajte x + width <= 720 i y + height <= 540.
NullPointerException prilikom čitanja teksta oblika
addAutoShape() vraća objekat oblika direktno. Ako vidite null, proverite da ne odbacujete vraćenu vrednost. Takođe proverite da getTextFrame() nije null pre čitanja teksta.
Tekst ćelije tabele je prazan nakon dodele
Ispravan metod je .getTextFrame().setText(value). Pristupajte ćelijama kao table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").
Često postavljana pitanja
Koliko oblika mogu da dodam na slajd?
Ne postoji ograničenje nametnuto od strane biblioteke. Praktična ograničenja zavise od veličine fajla i sposobnosti renderovanja vašeg ciljnog PPTX pregledača.
Mogu li promeniti položaj oblika nakon što ga dodam?
Da. Objekat oblika koji se vraća putem addAutoShape() ima svojstva položaja i veličine putem getShapeFrame().
Da li su grafikoni podržani?
Ne. Grafikoni, SmartArt i OLE objekti nisu implementirani u ovoj ediciji i izazivaju UnsupportedOperationException.