Sådan tilføjer du former til PowerPoint i Java

Sådan tilføjer du former til PowerPoint i Java

Aspose.Slides FOSS for Java understøtter at tilføje AutoShapes, Tables, Connectors og PictureFrames til præsentationsslides. Alle formtyper tilføjes gennem slide.getShapes()-samlingen.

Trin-for-trin Guide

Trin 1: Tilføj Maven-afhængigheden

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

Trin 2: Opret en præsentation

Brug altid try-with-resources til at håndtere ressourcer.

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

Trin 3: Tilføj en AutoShape

slide.getShapes().addAutoShape(shapeType, x, y, width, height) placerer en form på den angivne position og størrelse (alle i point). Brug ShapeType konstanter til at vælge 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);
}

Trin 4: Tilføj en tabel

slide.getShapes().addTable(x, y, colWidths, rowHeights) opretter en tabel på den angivne position. Kolonnebredder og rækkehøjder er arrays af punktværdier.

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

Trin 5: Tilføj en connector

Forbindelser forbinder to former visuelt. Opret først formerne, tilføj derefter en forbindelse og indstil dens start- og slutforbindelsespunkter.

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

Forbindelsesstedindekser er nummereret 0‑3 for en rektangel: top=0, venstre=1, bund=2, højre=3.


Trin 6: Tilføj en billedramme

Indlejr et billede og tilføj det til sliden som en PictureFrame. Læs billedbytes først, tilføj dem til præsentationens billedsamling, og opret derefter 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);
}

Almindelige problemer og rettelser

Formen vises uden for det synlige slide-området

Dias er som standard 720 × 540 punkter. Værdier af x eller y uden for disse grænser placerer formen uden for diaset. Behold x < 720 og y < 540, og sørg for x + width <= 720 og y + height <= 540.

NullPointerException ved læsning af formtekst

addAutoShape() returnerer shape‑objektet direkte. Hvis du ser null, så tjek at du ikke kasserer returværdien. Bekræft også, at getTextFrame() ikke er null, før du læser teksten.

Tabelcelletekst er tom efter tildeling

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


Ofte stillede spørgsmål

Hvor mange former kan jeg tilføje til et dias?

Der er ingen bibliotekspålagt grænse. Praktiske grænser afhænger af filstørrelsen og gengivelseskapaciteten i din mål‑PPTX‑fremviser.

Kan jeg ændre en formes position efter at have tilføjet den?

Ja. Formobjektet, der returneres af addAutoShape(), har positions‑ og størrelsesejendomme via getShapeFrame().

Er diagrammer understøttet?

Nej. Diagrammer, SmartArt og OLE‑objekter er ikke implementeret i denne udgave og udløser UnsupportedOperationException.


Se også

 Dansk