Hvordan legge til former i PowerPoint i Java

Hvordan legge til former i PowerPoint i Java

Aspose.Slides FOSS for Java støtter å legge til AutoShapes, Tables, Connectors og PictureFrames i presentasjonslysbilder. Alle formtyper legges til gjennom slide.getShapes()-samlingen.

Steg-for-steg guide

Steg 1: Legg til Maven‑avhengigheten

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

Steg 2: Opprett en presentasjon

Bruk alltid try-with-resources for å håndtere ressurser.

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);
}

Trinn 3: Legg til en AutoShape

slide.getShapes().addAutoShape(shapeType, x, y, width, height) plasserer en form på den gitte posisjonen og størrelsen (alle i punkter). Bruk ShapeType‑konstanter for å velge formen.

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);
}

Steg 4: Legg til en tabell

slide.getShapes().addTable(x, y, colWidths, rowHeights) oppretter en tabell på den angitte posisjonen. Kolonnebredder og radhøyder er arrayer av punktverdier.

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);
}

Steg 5: Legg til en kobling

Koblinger kobler to former visuelt. Opprett formene først, deretter legg til en kobling og angi start‑ og sluttkoblingspunktene.

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);
}

Tilkoblingsstedindekser er nummerert 0‑3 for et rektangel: top=0, left=1, bottom=2, right=3.


Trinn 6: Legg til en bildramme

Bytt inn et bilde og legg det til lysbildet som en PictureFrame. Les bildebytesene først, legg dem til presentasjonens bildesamling, og opprett deretter rammen.

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);
}

Vanlige problemer og løsninger

Formen vises utenfor det synlige lysbildeområdet

Lysbilder er som standard 720 × 540 poeng. Verdier av x eller y utenfor disse grensene plasserer formen utenfor lysbildet. Behold x < 720 og y < 540, og sørg for x + width <= 720 og y + height <= 540.

NullPointerException ved lesing av formtekst

addAutoShape() returnerer shape‑objektet direkte. Hvis du ser null, sjekk at du ikke forkaster returverdien. Verifiser også at getTextFrame() ikke er null før du leser teksten.

Tabellcelletekst er tom etter tildeling

Den korrekte metoden er .getTextFrame().setText(value). Få tilgang til celler som table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").


Ofte stilte spørsmål

Hvor mange former kan jeg legge til på et lysbilde?

Det er ingen bibliotekpålagt grense. Praktiske begrensninger avhenger av filstørrelse og gjengivelsesevnen til din mål‑PPTX‑viser.

Kan jeg endre posisjonen til en figur etter at jeg har lagt den til?

Ja. shape object returnert av addAutoShape() har position and size properties via getShapeFrame().

Er diagrammer støttet?

Nei. Diagrammer, SmartArt og OLE‑objekter er ikke implementert i denne utgaven og gir UnsupportedOperationException.


Se også

 Norsk