Comment créer des présentations en Java

Comment créer des présentations en Java

Aspose.Slides FOSS for Java vous permet de créer des présentations PowerPoint entièrement en Java sans dépendance à Microsoft Office. Ce guide montre comment créer une nouvelle présentation, ajouter des diapositives et des formes, formater le texte et enregistrer le résultat.

Guide étape par étape

Étape 1 : Ajouter la dépendance Maven

Ajoutez Aspose.Slides FOSS à votre pom.xml. Java 21 ou version ultérieure est requis.

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

Vérifiez l’installation :

import org.aspose.slides.foss.Presentation;

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

Étape 2 : Importer les classes requises

Importez la classe Presentation et l’énumération SaveFormat nécessaires pour l’enregistrement.

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;

Toutes les constantes de type de forme se trouvent dans org.aspose.slides.foss.ShapeType. Les énumérations de formatage (FillType, NullableBool) sont également dans org.aspose.slides.foss.


Étape 3 : Créer une présentation

Utilisez new Presentation() et encapsulez‑le dans try-with-resources. Une nouvelle présentation commence avec une diapositive vierge.

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

Important : Utilisez toujours try-with-resources ou appelez prs.dispose() dans un bloc finally. Les ressources ne seront pas libérées correctement sinon.


Étape 4 : Accéder à une diapositive

La première diapositive se trouve à l’index 0. Une présentation vierge contient exactement une diapositive.

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

Étape 5 : Ajouter une forme

Utilisez slide.getShapes().addAutoShape() pour ajouter une AutoShape. Les paramètres sont (shapeType, x, y, width, height) tous en points (1 point = 1/72 pouce ; la diapositive standard fait 720 x 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);
}

Étape 6 : Enregistrer la présentation

Appelez prs.save(path, SaveFormat.PPTX) avant que le bloc try ne se termine. PPTX est le seul format de sortie pris en charge.

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

Le fichier est écrit de manière atomique ; si une erreur survient avant cet appel, aucun fichier de sortie n’est créé.


Exemple complet fonctionnel

Le programme suivant crée une présentation de deux diapositives avec une forme de titre sur la première diapositive et un tableau sur la seconde.

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

Problèmes courants et solutions

IllegalStateException: Presentation already disposed

Vous appelez des méthodes sur un objet Presentation après la sortie du bloc try‑with‑resources. Gardez toujours tout le travail à l’intérieur du bloc try.

UnsupportedOperationException lors de l’enregistrement

Cela se produit lors de la tentative d’enregistrement dans un format autre que PPTX, ou lors de l’utilisation d’une fonctionnalité non prise en charge (comme les graphiques ou les animations).

Forme apparaît en dehors de la zone visible de la diapositive

Les diapositives sont de 720 × 540 points par défaut. Conservez x + width <= 720 et y + height <= 540.


Foire aux questions

Quelle est la taille de diapositive par défaut ?

Un nouveau Presentation() crée des diapositives au format standard de 10 × 7,5 pouces (720 × 540 points). La modification de la taille des diapositives n’est pas encore prise en charge dans cette édition.

Puis-je ajouter plus d’une diapositive?

Oui. Appelez prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)) pour ajouter une diapositive vierge et y accéder par indice:

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

Puis-je ouvrir un fichier existant et ajouter des diapositives ?

Oui:

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

Quels formats puis-je enregistrer ?

Seul SaveFormat.PPTX est pris en charge. L’exportation vers PDF, HTML, SVG ou images n’est pas disponible dans cette édition.


Voir aussi

 Français