Cum să creaţi prezentări în Java

Cum să creaţi prezentări în Java

Aspose.Slides FOSS for Java vă permite să creați prezentări PowerPoint în întregime în Java, fără dependență de Microsoft Office. Acest ghid arată cum să creați o prezentare nouă, să adăugați diapozitive și forme, să formatați textul și să salvați rezultatul.

Ghid pas cu pas

Pasul 1: Adăugați dependența Maven

Adăugați Aspose.Slides FOSS la pom.xml. Este necesar Java 21 sau o versiune ulterioară.

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

Verificați instalarea:

import org.aspose.slides.foss.Presentation;

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

Pasul 2: Importă clasele necesare

Importați clasa Presentation și enumul SaveFormat necesare pentru salvare.

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;

Toate constantele de tip formă se află în org.aspose.slides.foss.ShapeType. Enumerațiile de formatare (FillType, NullableBool) se află, de asemenea, în org.aspose.slides.foss.


Pasul 3: Creare prezentare

Utilizați new Presentation() și înfășurați-l în try-with-resources. O prezentare nouă începe cu un singur diapozitiv gol.

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: Utilizați întotdeauna try-with-resources sau apelați prs.dispose() într-un bloc finally. Resursele nu vor fi eliberate corect în caz contrar.


Pasul 4: Accesarea unui diapozitiv

Primul diapozitiv se află la indexul 0. O prezentare goală are exact un diapozitiv.

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

Pasul 5: Adaugă o formă

Utilizați slide.getShapes().addAutoShape() pentru a adăuga un AutoShape. Parametrii sunt (shapeType, x, y, width, height) toți în puncte (1 punct = 1/72 inch; diapozitivul standard este 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);
}

Pasul 6: Salvați prezentarea

Apelă prs.save(path, SaveFormat.PPTX) înainte ca blocul try să iasă. PPTX este singurul format de ieșire acceptat.

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

Fișierul este scris atomic; dacă apare o eroare înainte de acest apel, nu se creează niciun fișier de ieșire.


Exemplu complet de lucru

Programul de mai jos creează o prezentare cu două diapozitive, cu o formă de titlu pe primul diapozitiv și un tabel pe al doilea.

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

Probleme comune și soluții

IllegalStateException: Presentation already disposed

Apelați metode pe un obiect Presentation după ce blocul try‑with‑resources a ieșit. Întotdeauna păstraţi totul în interiorul blocului try.

UnsupportedOperationException la salvare

Acest lucru se întâmplă atunci când se încearcă un format de salvare diferit de PPTX sau când se utilizează o funcționalitate neacceptată (cum ar fi graficele sau animațiile).

Forma apare în afara zonei vizibile a diapozitivului

Diapozitivele sunt de 720 x 540 puncte în mod implicit. Păstrează x + width <= 720 și y + height <= 540.


Întrebări frecvente

Care este dimensiunea implicită a diapozitivului?

Un nou Presentation() creează diapozitive la dimensiunea standard de 10 x 7,5 inci (720 x 540 puncte). Modificarea dimensiunii diapozitivului nu este încă suportată în această ediție.

Pot adăuga mai mult de un diapozitiv?

Da. Apelă prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)) pentru a adăuga un diapozitiv gol și a-l accesa prin index:

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

Pot să deschid un fișier existent și să adaug diapozitive?

Da:

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

În ce formate pot salva?

Doar SaveFormat.PPTX este acceptat. Exportul în PDF, HTML, SVG sau imagini nu este disponibil în această ediție.


Vezi și

 Română