Hoe presentaties maken in Java

Hoe presentaties maken in Java

Aspose.Slides FOSS for Java stelt je in staat om PowerPoint‑presentaties volledig in Java te maken zonder afhankelijkheid van Microsoft Office. Deze gids laat zien hoe je een nieuwe presentatie maakt, dia’s en vormen toevoegt, tekst opmaakt en het resultaat opslaat.

Stapsgewijze handleiding

Stap 1: Voeg de Maven‑afhankelijkheid toe

Voeg Aspose.Slides FOSS toe aan uw pom.xml. Java 21 of hoger is vereist.

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

Controleer de installatie:

import org.aspose.slides.foss.Presentation;

Presentation prs = new Presentation();
prs.dispose();
System.out.println("Aspose.Slides FOSS ready");

Stap 2: Importeer de vereiste klassen

Importeer de Presentation klasse en de SaveFormat enum die nodig zijn voor het opslaan.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;

Alle shape-type constanten bevinden zich in org.aspose.slides.foss.ShapeType. Formatting‑enums (FillType, NullableBool) staan ook in org.aspose.slides.foss.


Stap 3: Maak een presentatie

Gebruik new Presentation() en wikkel het in een try-with-resources. Een nieuwe presentatie begint met één lege dia.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation()) {
    System.out.println("Slides in new presentation: " + prs.getSlides().size());
    prs.save("output.pptx", SaveFormat.PPTX);
}

Belangrijk: Gebruik altijd try-with-resources of roep prs.dispose() aan in een finally‑blok. Bronnen worden anders niet correct vrijgegeven.


Stap 4: Toegang tot een dia

De eerste dia bevindt zich op index 0. Een lege presentatie heeft precies één dia.

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);  // zero-based index
    System.out.println("Slide at index 0: " + slide);
    prs.save("output.pptx", SaveFormat.PPTX);
}

Stap 5: Voeg een vorm toe

Gebruik slide.getShapes().addAutoShape() om een AutoShape toe te voegen. De parameters zijn (shapeType, x, y, width, height), allemaal in punten (1 punt = 1/72 inch; standaard dia is 720 × 540 pt).

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);

    // Rectangle at (50, 50) with 400 wide and 120 tall
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 400, 120
    );

    // Attach a text frame
    shape.addTextFrame("Hello from Aspose.Slides FOSS!");

    prs.save("with-shape.pptx", SaveFormat.PPTX);
}

Stap 6: Sla de presentatie op

Roep prs.save(path, SaveFormat.PPTX) aan voordat het try block wordt verlaten. PPTX is het enige ondersteunde uitvoerformaat.

prs.save("result.pptx", SaveFormat.PPTX);

Het bestand wordt atomair geschreven; als er een fout optreedt vóór deze aanroep, wordt er geen uitvoerbestand aangemaakt.


Volledig Werkend Voorbeeld

Het volgende programma maakt een presentatie met twee dia’s, met een titelvorm op de eerste dia en een tabel op de tweede.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;

public class CreatePresentation {
    public static void main(String[] args) {
        try (Presentation prs = new Presentation()) {
            // --- Slide 1: title shape ---
            ISlide slide1 = prs.getSlides().get(0);
            IAutoShape title = slide1.getShapes().addAutoShape(
                ShapeType.RECTANGLE, 40, 40, 640, 80
            );
            ITextFrame tf = title.addTextFrame("Q1 Results: Executive Summary");
            IPortionFormat fmt = tf.getParagraphs().get(0)
                .getPortions().get(0).getPortionFormat();
            fmt.setFontHeight(32);
            fmt.setFontBold(NullableBool.TRUE);
            fmt.getFillFormat().setFillType(FillType.SOLID);
            fmt.getFillFormat().getSolidFillColor().setColor(
                Color.fromArgb(255, 0, 70, 127)
            );

            // --- Slide 2: table ---
            prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
            ISlide slide2 = prs.getSlides().get(1);
            ITable table = slide2.getShapes().addTable(
                40, 40,
                new double[]{200.0, 120.0, 120.0},
                new double[]{40.0, 40.0, 40.0}
            );
            String[] headers = {"Region", "Revenue", "Growth"};
            String[][] data = {
                {"North", "$1.2M", "+8%"},
                {"South", "$0.9M", "+4%"},
            };
            for (int col = 0; col < headers.length; col++) {
                table.getRows().get(0).get(col).getTextFrame().setText(headers[col]);
            }
            for (int row = 0; row < data.length; row++) {
                for (int col = 0; col < data[row].length; col++) {
                    table.getRows().get(row + 1).get(col)
                        .getTextFrame().setText(data[row][col]);
                }
            }

            prs.save("q1-results.pptx", SaveFormat.PPTX);
        }
        System.out.println("Saved q1-results.pptx");
    }
}

Veelvoorkomende problemen en oplossingen

IllegalStateException: Presentation already disposed

Je roept methoden aan op een Presentation‑object nadat het try‑with‑resources‑blok is verlaten. Houd al het werk altijd binnen het try‑blok.

UnsupportedOperationException bij het opslaan

Dit gebeurt wanneer u een opslaan-indeling probeert die anders is dan PPTX, of wanneer u een niet‑ondersteunde functie gebruikt (zoals grafieken of animaties).

Vorm verschijnt buiten het zichtbare dia‑gebied

Dia’s zijn standaard 720 × 540 punten. Houd x + width <= 720 en y + height <= 540.


Veelgestelde vragen

Wat is de standaardgrootte van de dia?

Een nieuwe Presentation() maakt dia’s aan in de standaardgrootte van 10 × 7,5 inch (720 × 540 punten). Het wijzigen van de dia‑grootte wordt in deze editie nog niet ondersteund.

Kan ik meer dan één dia toevoegen?

Ja. Roep prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)) aan om een lege dia toe te voegen en er via de index toegang toe te krijgen:

prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
ISlide slide2 = prs.getSlides().get(1);

Kan ik een bestaand bestand openen en dia’s toevoegen?

Ja:

try (Presentation prs = new Presentation("existing.pptx")) {
    prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
    prs.save("existing.pptx", SaveFormat.PPTX);
}

Naar welke formaten kan ik opslaan?

Alleen SaveFormat.PPTX wordt ondersteund. Exporteren naar PDF, HTML, SVG of afbeeldingen is niet beschikbaar in deze editie.


Zie ook

 Nederlands