Com crear presentacions en Java

Com crear presentacions en Java

Aspose.Slides FOSS for Java us permet crear presentacions PowerPoint completament en Java sense cap dependència de Microsoft Office. Aquesta guia mostra com crear una nova presentació, afegir diapositives i formes, formatar text i desar el resultat.

Guia pas a pas

Pas 1: Afegeix la dependència Maven

Afegeix Aspose.Slides FOSS al teu pom.xml. Es requereix Java 21 o posterior.

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

Verifiqueu la instal·lació:

import org.aspose.slides.foss.Presentation;

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

Pas 2: Importa les classes necessàries

Importa la classe Presentation i l’enumeració SaveFormat necessàries per desar.

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;

Tots els constants de tipus de forma es troben a org.aspose.slides.foss.ShapeType. Els enums de format (FillType, NullableBool) també es troben a org.aspose.slides.foss.


Pas 3: Crea una presentació

Utilitzeu new Presentation() i emboliqueu-lo en try-with-resources. Una nova presentació comença amb una diapositiva en blanc.

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: Sempre utilitzeu try-with-resources o crideu prs.dispose() en un bloc finally. Els recursos no es liberaran correctament altrament.


Pas 4: Accedir a una diapositiva

La primera diapositiva està a l’índex 0. Una presentació en blanc té exactament 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);
}

Pas 5: Afegeix una forma

Utilitzeu slide.getShapes().addAutoShape() per afegir una AutoShape. Els paràmetres són (shapeType, x, y, width, height) tots en punts (1 punt = 1/72 polzada; la diapositiva estàndard és de 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);
}

Pas 6: Desa la presentació

Crida prs.save(path, SaveFormat.PPTX) abans que el bloc try surti. PPTX és l’únic format de sortida compatible.

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

El fitxer s’escriu de manera atòmica; si es produeix un error abans d’aquesta crida, no es crea cap fitxer de sortida.


Exemple complet de treball

El programa següent crea una presentació de dues diapositives amb una forma de títol a la primera diapositiva i una taula a la segona.

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

Problemes comuns i solucions

IllegalStateException: Presentation already disposed

Estàs cridant mètodes sobre un objecte Presentation després que el bloc try-with-resources hagi finalitzat. Mantingues sempre tota la feina dins del bloc try.

UnsupportedOperationException en desar

Això ocorre quan s’intenta un format de desament diferent de PPTX, o quan s’utilitza una funció no compatible (com ara gràfics o animacions).

La forma apareix fora de l’àrea visible de la diapositiva

Les diapositives són de 720 x 540 punts per defecte. Manteniu x + width <= 720 i y + height <= 540.


Preguntes freqüents

Quina és la mida per defecte de la diapositiva?

Un nou Presentation() crea diapositives amb la mida estàndard de 10 x 7,5 polzades (720 x 540 punts). Canviar la mida de les diapositives encara no està suportat en aquesta edició.

Puc afegir més d’una diapositiva?

Sí. Crida prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)) per afegir una diapositiva en blanc i accedir-hi per índex:

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

Puc obrir un fitxer existent i afegir diapositives?

Sí:

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

Quins formats puc desar a?

Només SaveFormat.PPTX és compatible. L’exportació a PDF, HTML, SVG o imatges no està disponible en aquesta edició.


Vegeu també

 Català