Come creare presentazioni in Java

Come creare presentazioni in Java

Aspose.Slides FOSS for Java ti consente di creare presentazioni PowerPoint interamente in Java senza dipendere da Microsoft Office. Questa guida mostra come creare una nuova presentazione, aggiungere diapositive e forme, formattare il testo e salvare il risultato.

Guida passo-passo

Passo 1: Aggiungi la dipendenza Maven

Aggiungi Aspose.Slides FOSS al tuo pom.xml. È richiesto Java 21 o versioni successive.

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

Verifica l’installazione:

import org.aspose.slides.foss.Presentation;

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

Passo 2: Importa le classi richieste

Importa la classe Presentation e l’enum SaveFormat necessari per il salvataggio.

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;

Tutte le costanti di tipo forma si trovano in org.aspose.slides.foss.ShapeType. Gli enum di formattazione (FillType, NullableBool) sono anch’essi in org.aspose.slides.foss.


Passo 3: Crea una presentazione

Usa new Presentation() e incapsularlo in try-with-resources. Una nuova presentazione inizia con una diapositiva vuota.

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

Importante: Usa sempre try-with-resources o chiama prs.dispose() in un blocco finally. Le risorse non verranno rilasciate correttamente altrimenti.


Passo 4: Accedi a una diapositiva

La prima diapositiva è all’indice 0. Una presentazione vuota ha esattamente una diapositiva.

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

Passo 5: Aggiungi una forma

Usa slide.getShapes().addAutoShape() per aggiungere un’AutoShape. I parametri sono (shapeType, x, y, width, height) tutti in punti (1 punto = 1/72 di pollice; la diapositiva standard è 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);
}

Passo 6: Salva la presentazione

Chiama prs.save(path, SaveFormat.PPTX) prima che il blocco try termini. PPTX è l’unico formato di output supportato.

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

Il file viene scritto in modo atomico; se si verifica un errore prima di questa chiamata, non viene creato alcun file di output.


Esempio completo funzionante

Il programma seguente crea una presentazione a due diapositive con una forma titolo nella prima diapositiva e una tabella nella seconda.

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

Problemi comuni e soluzioni

IllegalStateException: Presentation already disposed

Stai chiamando metodi su un oggetto Presentation dopo che il blocco try-with-resources è uscito. Mantieni sempre tutto il lavoro all’interno del blocco try.

UnsupportedOperationException durante il salvataggio

Ciò si verifica quando si tenta di salvare in un formato diverso da PPTX, o quando si utilizza una funzionalità non supportata (come grafici o animazioni).

La forma appare al di fuori dell’area visibile della diapositiva

Le diapositive sono 720 × 540 punti per impostazione predefinita. Mantieni x + width <= 720 e y + height <= 540.


Domande Frequenti

Qual è la dimensione predefinita della diapositiva?

Una nuova Presentation() crea diapositive nella dimensione standard di 10 × 7,5 pollici (720 × 540 punti). Cambiare la dimensione della diapositiva non è ancora supportato in questa edizione.

Posso aggiungere più di una diapositiva?

Sì. Chiama prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)) per aggiungere una diapositiva vuota e accedervi per indice:

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

Posso aprire un file esistente e aggiungere diapositive?

Sì:

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

Quali formati posso salvare?

È supportato solo SaveFormat.PPTX. L’esportazione in PDF, HTML, SVG o immagini non è disponibile in questa edizione.


Vedi anche

 Italiano