Kā pievienot formas PowerPoint prezentācijai, izmantojot Java
Aspose.Slides FOSS for Java atbalsta AutoShapes, Tables, Connectors un PictureFrames pievienošanu prezentācijas slaidiem. Visus formu tipus pievieno caur slide.getShapes() kolekciju.
Rokasgrāmata soli pa solim
1. solis: Pievienojiet Maven atkarību
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>2. solis: Izveidot prezentāciju
Vienmēr izmantojiet try-with-resources, lai pārvaldītu resursus.
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. solis: Pievienot AutoShape
slide.getShapes().addAutoShape(shapeType, x, y, width, height) novieto formu dotajā pozīcijā un izmērā (visi punktos). Izmantojiet ShapeType konstantes, lai izvēlētos formu.
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. solis: Pievienot tabulu
slide.getShapes().addTable(x, y, colWidths, rowHeights) izveido tabulu norādītā pozīcijā. Kolonnu platumi un rindu augstumi ir punktu vērtību masīvi.
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);
}Solis 5: Pievienot savienotāju
Savienotāji vizuāli saista divas figūras. Vispirms izveidojiet figūras, pēc tam pievienojiet savienotāju un iestatiet tā sākuma un beigu savienojuma punktus.
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);
}Savienojuma vietas indeksi ir numurēti no 0 līdz 3 taisnstūrim: augšējā=0, kreisajā=1, apakšējā=2, labajā=3.
Solis 6: Pievienot attēla rāmi
Iegult attēlu un pievienot to slaidam kā PictureFrame. Vispirms nolasiet attēla baitus, pievienojiet tos prezentācijas attēlu kolekcijai, pēc tam izveidojiet rāmi.
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);
}Biežas problēmas un risinājumi
Forma parādās ārpus redzamās slaida zonas
Slaidi pēc noklusējuma ir 720 × 540 punkti. x vai y vērtības, kas pārsniedz šos robežus, novieto formu ārpus slaida. Saglabājiet x < 720 un y < 540, un pārliecinieties, ka x + width <= 720 un y + height <= 540.
NullPointerException lasot formas tekstu
addAutoShape() atgriež formas objektu tieši. Ja redzat null, pārbaudiet, vai nemestat atgriezto vērtību. Tāpat pārbaudiet, vai getTextFrame() nav null, pirms lasāt tekstu.
Tabulas šūnas teksts ir tukšs pēc piešķiršanas
Pareizā metode ir .getTextFrame().setText(value). Piekļūst šūnām kā table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").
Biežāk uzdotie jautājumi
Cik daudz formu varu pievienot slaidam?
Nav bibliotēkas noteikta ierobežojuma. Praktiskie ierobežojumi ir atkarīgi no faila lieluma un jūsu mērķa PPTX skatītāja renderēšanas iespējas.
Vai varu mainīt formas pozīciju pēc tās pievienošanas?
Jā. Formas objekts, ko atgriež addAutoShape(), ir ar pozīcijas un izmēra īpašībām caur getShapeFrame().
Vai diagrammas tiek atbalstītas?
Nē. Diagrammas, SmartArt un OLE objekti nav ieviesti šajā izdevumā un izraisa UnsupportedOperationException.