Hur man skapar presentationer i Java

Hur man skapar presentationer i Java

Aspose.Slides FOSS for Java låter dig skapa PowerPoint-presentationer helt i Java utan beroende av Microsoft Office. Denna guide visar hur du skapar en ny presentation, lägger till bilder och former, formaterar text och sparar resultatet.

Steg-för-steg-guide

Steg 1: Lägg till Maven‑beroendet

Lägg till Aspose.Slides FOSS i din pom.xml. Java 21 eller senare krävs.

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

Verifiera installationen:

import org.aspose.slides.foss.Presentation;

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

Steg 2: Importera de nödvändiga klasserna

Importera Presentation-klassen och SaveFormat-enumet som behövs för att spara.

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;

Alla shape‑typkonstanter finns i org.aspose.slides.foss.ShapeType. Formateringsenum (FillType, NullableBool) finns också i org.aspose.slides.foss.


Steg 3: Skapa en presentation

Använd new Presentation() och omslut den i try-with-resources. En ny presentation börjar med en tom bild.

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

Viktigt: Använd alltid try-with-resources eller anropa prs.dispose() i ett finally‑block. Resurser kommer annars inte att släppas korrekt.


Steg 4: Åtkomst till en bild

Den första bilden är på index 0. En tom presentation har exakt en bild.

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

Steg 5: Lägg till en form

Använd slide.getShapes().addAutoShape() för att lägga till en AutoShape. Parametrarna är (shapeType, x, y, width, height) alla i punkter (1 punkt = 1/72 tum; standardbild är 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);
}

Steg 6: Spara presentationen

Anropa prs.save(path, SaveFormat.PPTX) innan try‑blocket avslutas. PPTX är det enda stödda utdataformatet.

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

Filen skrivs atomärt; om ett fel uppstår innan detta anrop, skapas ingen utdatafil.


Fullständigt fungerande exempel

Följande program skapar en tvåbildspresentation med en titelform på den första bilden och en tabell på den andra.

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

Vanliga problem och lösningar

IllegalStateException: Presentation already disposed

Du anropar metoder på ett Presentation‑objekt efter att try‑with‑resources‑blocket har avslutats. Håll alltid allt arbete inom try‑blocket.

UnsupportedOperationException vid sparande

Detta inträffar när du försöker spara i ett annat format än PPTX, eller när du använder en funktion som inte stöds (t.ex. diagram eller animationer).

Formen visas utanför det synliga bildområdet

Bilder är som standard 720 × 540 punkter. Behåll x + width <= 720 och y + height <= 540.


Vanliga frågor

Vad är standardstorleken på bilden?

En ny Presentation() skapar bilder i standardstorleken 10 × 7,5 tum (720 × 540 punkt). Att ändra bildstorleken stöds ännu inte i den här utgåvan.

Kan jag lägga till mer än en slide?

Ja. Anropa prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)) för att lägga till en tom bild och komma åt den via index:

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

Kan jag öppna en befintlig fil och lägga till bilder?

Ja:

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

Vilka format kan jag spara till?

Endast SaveFormat.PPTX stöds. Export till PDF, HTML, SVG eller bilder är inte tillgängligt i den här utgåvan.


Se även

 Svenska