Kaip kurti prezentacijas Java kalba

Kaip kurti prezentacijas Java kalba

Aspose.Slides FOSS for Java leidžia kurti PowerPoint pristatymus visiškai Java kalba, nesikliaujant Microsoft Office. Šiame vadove parodyta, kaip sukurti naują pristatymą, pridėti skaidres ir formas, formatuoti tekstą ir išsaugoti rezultatą.

Žingsnis po žingsnio vadovas

Žingsnis 1: pridėkite Maven priklausomybę

Pridėkite Aspose.Slides FOSS prie savo pom.xml. Reikalinga Java 21 arba naujesnė.

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

Patikrinkite diegimą:

import org.aspose.slides.foss.Presentation;

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

Žingsnis 2: Importuokite reikiamas klases

Importuokite Presentation klasę ir SaveFormat enumą, reikalingus išsaugojimui.

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;

Visi formų tipo konstantai yra org.aspose.slides.foss.ShapeType. Formatavimo enumai (FillType, NullableBool) taip pat yra org.aspose.slides.foss.


Žingsnis 3: Sukurti pristatymą

Naudokite new Presentation() ir apgaubkite jį try‑with‑resources bloku. Nauja prezentacija prasideda viena tuščia skaidrė.

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

Svarbu: Visada naudokite try-with-resources arba iškvieskite prs.dispose() finally bloke. Priešingu atveju ištekliai nebus teisingai atlaisvinti.


4 žingsnis: Prieiti prie skaidrės

Pirmoji skaidrė yra indekse 0. Tuščia prezentacija turi lygiai vieną skaidrę.

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

Žingsnis 5: Pridėti formą

Naudokite slide.getShapes().addAutoShape(), kad pridėtumėte AutoShape. Parametrai yra (shapeType, x, y, width, height), visi taškais (1 taškas = 1/72 colio; standartinė skaidrė yra 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 žingsnis: Išsaugoti prezentaciją

Iškvieskite prs.save(path, SaveFormat.PPTX) prieš išeinant iš try bloko. PPTX yra vienintelis palaikomas išvesties formatas.

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

Failas rašomas atominiu būdu; jei įvyksta klaida prieš šį iškvietimą, išvesties failas nesukuriamas.


Pilnas veikiantis pavyzdys

Žemiau pateikta programa sukuria dviejų skaidrių pristatymą su pavadinimo forma pirmoje skaidrėje ir lentele antroje.

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

Dažnos problemos ir sprendimai

IllegalStateException: Presentation already disposed

Jūs kviečiate metodus Presentation objektui po to, kai try‑with‑resources blokas baigėsi. Visada laikykite visą darbą try bloke.

UnsupportedOperationException išsaugant

Tai įvyksta bandant išsaugoti formatą, kuris nėra PPTX, arba naudojant nepalaikomą funkciją (pvz., diagramas arba animacijas).

Figūra atsiranda už matomo skaidrės ploto

Skaidrės pagal numatymą yra 720 × 540 taškų. Palikite x + width <= 720 ir y + height <= 540.


Dažnai užduodami klausimai

Koks yra numatytasis skaidrės dydis?

Naujas Presentation() sukuria skaidres standartiniu 10 × 7,5 colio (720 × 540 taškų) dydžiu. Skaidrių dydžio keitimas šioje leidimo versijoje dar nepalaikomas.

Ar galiu pridėti daugiau nei vieną skaidrę?

Taip. Iškvieskite prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)), kad pridėtumėte tuščią skaidrę ir pasiektumėte ją pagal indeksą:

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

Ar galiu atidaryti esamą failą ir pridėti skaidres?

Taip:

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

Kokius formatus galiu išsaugoti?

Palaikoma tik SaveFormat.PPTX. Eksportavimas į PDF, HTML, SVG arba vaizdus šioje leidimo versijoje nėra prieinamas.


Žr. taip pat

 Lietuvių