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 se dodaju kroz slide.getShapes() kolekciju.

Vodič korak po korak

Korak 1: Dodajte Maven zavisnost

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

Korak 2: Kreirajte prezentaciju

Uvek 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 zadatu poziciju i veličinu (sve u tačkama). Koristite ShapeType konstante da izaberete oblik.

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: Dodajte tabelu

slide.getShapes().addTable(x, y, colWidths, rowHeights) kreira tabelu na navedenoj poziciji. Širine kolona i visine redova su nizovi vrednosti u tač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

Konektori vizuelno povezuju dva oblika. Prvo kreirajte oblike, zatim dodajte konektor i postavite njegove početne i krajnje tačke povezivanja.

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 tačaka povezivanja su numerisani od 0 do 3 za pravougaonik: top=0, left=1, bottom=2, right=3.


Korak 6: Dodajte 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 kreirajte 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);
}

Уобичајени проблеми и решења

Oblik se pojavljuje izvan vidljivog područja slajda

Slajdovi su po defaultu 720 × 540 poena. Vrednosti x ili y izvan tih granica postavljaju oblik van slajda. Zadržite x < 720 i y < 540, i osigurajte x + width <= 720 i y + height <= 540.

NullPointerException prilikom čitanja teksta oblika

addAutoShape() vraća objekat oblika direktno. Ako vidite null, proverite da ne odbacujete vraćenu vrednost. Takođe proverite da getTextFrame() nije null pre čitanja teksta.

Tekst ćelije tabele je prazan nakon dodele

Ispravan metod je .getTextFrame().setText(value). Pristupajte ćelijama kao table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").


Često postavljana pitanja

Koliko oblika mogu da dodam na slajd?

Ne postoji ograničenje nametnuto od strane biblioteke. Praktična ograničenja zavise od veličine fajla i sposobnosti renderovanja vašeg ciljnog PPTX pregledača.

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

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

Da li su grafikoni podržani?

Ne. Grafikoni, SmartArt i OLE objekti nisu implementirani u ovoj ediciji i izazivaju UnsupportedOperationException.


Види такође

 Српски