Kako dodati oblike u PowerPoint u Javi

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 dodaju se putem kolekcije slide.getShapes().

Vodič korak po korak

Korak 1: Dodajte Maven ovisnost

<dependency>
  <groupId>org.aspose.slides.foss</groupId>
  <artifactId>aspose-slides-foss</artifactId>
  <version>1.0.0</version>
</dependency>

Korak 2: Stvori prezentaciju

Uvijek 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 zadanu poziciju i veličinu (sve u točkama). Koristite ShapeType konstante za odabir oblika.

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: Dodaj tablicu

slide.getShapes().addTable(x, y, colWidths, rowHeights) stvara tablicu na navedenoj poziciji. Širine stupaca i visine redaka su nizovi vrijednosti u toč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

Poveznice vizualno povezuju dva oblika. Prvo stvorite oblike, zatim dodajte poveznicu i postavite njene početne i krajnje točke spajanja.

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 mjesta spajanja numerirani su od 0 do 3 za pravokutnik: vrh=0, lijevo=1, dno=2, desno=3.


Korak 6: Dodaj 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 stvorite 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);
}

Uobičajeni problemi i rješenja

Oblik se pojavljuje izvan vidljivog područja slajda

Slajdovi su po zadanim postavkama 720 × 540 točaka. Vrijednosti x ili y izvan tih granica postavljaju oblik izvan slajda. Zadržite x < 720 i y < 540 te osigurajte x + width <= 720 i y + height <= 540.

NullPointerException prilikom čitanja teksta oblika

addAutoShape() vraća objekt oblika izravno. Ako vidite null, provjerite ne odbacujete li vraćenu vrijednost. Također provjerite da getTextFrame() nije null prije čitanja teksta.

Tekst ćelije tablice je prazan nakon dodjele

Ispravan način je .getTextFrame().setText(value). Pristupite ćelijama kao table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").


Često postavljana pitanja

Koliko oblika mogu dodati na slajd?

Ne postoji ograničenje koje nameće biblioteka. Praktična ograničenja ovise o veličini datoteke i mogućnostima prikaza vašeg odabranog PPTX preglednika.

Mogu li promijeniti položaj oblika nakon što ga dodam?

Da. Objekt oblika koji vraća addAutoShape() ima svojstva položaja i veličine putem getShapeFrame().

Jesu li grafikoni podržani?

Ne. Grafikoni, SmartArt i OLE objekti nisu implementirani u ovom izdanju i uzrokuju UnsupportedOperationException.


Vidi također

 Hrvatski