Prezentációk létrehozása Java-ban

Prezentációk létrehozása Java-ban

Az Aspose.Slides FOSS for Java lehetővé teszi, hogy teljesen Java-ban hozzon létre PowerPoint‑prezentációkat, Microsoft Office függőség nélkül. Ez az útmutató bemutatja, hogyan lehet új prezentációt létrehozni, diákot és alakzatokat hozzáadni, szöveget formázni, és elmenteni az eredményt.

Lépésről‑lépésre útmutató

1. lépés: Adja hozzá a Maven függőséget

Adja hozzá az Aspose.Slides FOSS-t a pom.xml-hez. Java 21 vagy újabb szükséges.

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

Ellenőrizze a telepítést:

import org.aspose.slides.foss.Presentation;

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

2. lépés: A szükséges osztályok importálása

Importálja a Presentation osztályt és a SaveFormat enumot, amely a mentéshez szükséges.

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;

Minden alakzat‑típusú állandó a org.aspose.slides.foss.ShapeType‑ben található. A formázási felsorolások (FillType, NullableBool) szintén a org.aspose.slides.foss‑ben vannak.


3. lépés: Prezentáció létrehozása

Használja a new Presentation()-t, és csomagolja be try-with-resources használatával. Egy új bemutató egy üres diával kezdődik.

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

Fontos: Mindig használja a try-with-resources szerkezetet, vagy hívja meg prs.dispose()-t egy finally blokkban. Az erőforrások egyébként nem szabadulnak fel megfelelően.


4. lépés: Diához hozzáférés

Az első dia indexe 0. Egy üres prezentációnak pontosan egy diája van.

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

5. lépés: Alakzat hozzáadása

Használja a slide.getShapes().addAutoShape() parancsot egy AutoShape hozzáadásához. A paraméterek (shapeType, x, y, width, height) mind pontban (1 pont = 1/72 hüvelyk; a szabványos dia 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);
}

6. lépés: A bemutató mentése

Hívja meg a prs.save(path, SaveFormat.PPTX)-t, mielőtt a try blokk kilép. A PPTX az egyetlen támogatott kimeneti formátum.

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

A fájl atomik módon kerül írásra; ha hiba lép fel a hívás előtt, nem jön létre kimeneti fájl.


Teljes működő példa

Az alábbi program egy kétdiapozíciós prezentációt hoz létre, amelynek az első dián egy címszöveg alakzat, a másodikon pedig egy táblázat található.

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

Általános problémák és megoldások

IllegalStateException: Presentation already disposed

A try-with-resources blokk kilépése után metódusokat hívsz egy Presentation objektumon. Mindig tartsd a teljes munkát a try blokkban.

UnsupportedOperationException mentéskor

Ez akkor fordul elő, amikor a PPTX-en kívül más mentési formátumot próbálunk, vagy amikor nem támogatott funkciót használunk (például diagramokat vagy animációkat).

Alakzat a látható diaterületen kívül jelenik meg

A diák alapértelmezés szerint 720 × 540 pont. Tartsa meg x + width <= 720 és y + height <= 540.


Gyakran Ismételt Kérdések

Mi a diák alapértelmezett mérete?

Egy új Presentation() a szabványos 10 × 7,5 hüvelykes (720 × 540 pont) méretű diát hoz létre. A dia méretének módosítása még nem támogatott ebben a kiadásban.

Hozzáadhatok több mint egy diát?

Igen. Hívja meg a prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0))-t, hogy egy üres diát fűzzön hozzá, és index szerint érje el:

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

Megnyithatok egy meglévő fájlt, és hozzáadhatok diákat?

Igen:

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

Milyen formátumokba menthetek?

Csak a SaveFormat.PPTX támogatott. A PDF, HTML, SVG vagy képek exportálása nem érhető el ebben a kiadásban.


Lásd még

 Magyar