Kuinka lisätä muotoja PowerPointiin Java:ssa

Kuinka lisätä muotoja PowerPointiin Java:ssa

Aspose.Slides FOSS for Java tukee AutoShapes-, Tables-, Connectors- ja PictureFrames-objektien lisäämistä esitysdioihin. Kaikki muoto-tyypit lisätään slide.getShapes()-kokoelman kautta.

Vaiheittainen opas

Vaihe 1: Lisää Maven‑riippuvuus

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

Vaihe 2: Luo esitys

Käytä aina try-with-resources -menetelmää resurssien hallintaan.

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

Vaihe 3: Lisää AutoShape

slide.getShapes().addAutoShape(shapeType, x, y, width, height) sijoittaa muodon annettuun sijaintiin ja kokoon (kaikki pisteinä). Käytä ShapeType vakioita muodon valitsemiseen.

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

Vaihe 4: Lisää taulukko

slide.getShapes().addTable(x, y, colWidths, rowHeights) luo taulukon määritettyyn sijaintiin. Sarakkeiden leveydet ja rivien korkeudet ovat pistearvojen taulukoita.

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

Vaihe 5: Lisää liitin

Liittimet yhdistävät kaksi muotoa visuaalisesti. Luo muodot ensin, sitten lisää liitin ja aseta sen aloitus‑ ja lopetuspisteet.

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

Yhteyspisteiden indeksit on numeroitu 0‑3 suorakulmiolle: ylä=0, vasen=1, ala=2, oikea=3.


Vaihe 6: Lisää kuvan kehys

Upota kuva ja lisää se diaan PictureFrame-objektina. Lue kuvan tavut ensin, lisää ne esityksen kuvakokoelmaan ja luo sitten kehys.

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

Yleisiä ongelmia ja korjauksia

Muoto näkyy näkyvän dian alueen ulkopuolella

Diat ovat oletuksena 720 × 540 pistettä. x‑ tai y‑arvot, jotka ylittävät nämä rajat, asettavat muodon dian ulkopuolelle. Säilytä x < 720 ja y < 540, ja varmista x + width <= 720 ja y + height <= 540.

NullPointerException kun luetaan muodon teksti

addAutoShape() palauttaa muoto-objektin suoraan. Jos näet null, tarkista, ettet hylkää palautusarvoa. Varmista myös, että getTextFrame() ei ole null ennen tekstin lukemista.

Taulukon solun teksti on tyhjä määrittämisen jälkeen

Oikea menetelmä on .getTextFrame().setText(value). Käytä soluja muodossa table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").


Usein kysytyt kysymykset

Kuinka monta muotoa voin lisätä diaan?

Kirjaston asettamaa rajoitusta ei ole. Käytännön rajoitukset riippuvat tiedoston koosta ja kohde‑PPTX‑katselimen renderöintikyvystä.

Voinko muuttaa muodon sijaintia sen lisäämisen jälkeen?

Kyllä. addAutoShape()-funktion palauttama shape-objekti sisältää sijainti- ja kokomääritteet getShapeFrame():n kautta.

Tukeeko kaavioita?

Ei. Kaaviot, SmartArt ja OLE‑objektit eivät ole toteutettu tässä versiossa, ja ne aiheuttavat UnsupportedOperationException.


Katso myös

 Suomi