Cara Membuat Pembentangan dalam Java

Cara Membuat Pembentangan dalam Java

Aspose.Slides FOSS for Java membolehkan anda membuat persembahan PowerPoint sepenuhnya dalam Java tanpa kebergantungan pada Microsoft Office. Panduan ini menunjukkan cara membuat persembahan baru, menambah slaid dan bentuk, memformat teks, dan menyimpan hasilnya.

Panduan Langkah demi Langkah

Langkah 1: Tambah Kebergantungan Maven

Tambah Aspose.Slides FOSS ke pom.xml anda. Java 21 atau versi lebih baru diperlukan.

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

Sahkan pemasangan:

import org.aspose.slides.foss.Presentation;

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

Langkah 2: Import Kelas yang Diperlukan

Import kelas Presentation dan enum SaveFormat yang diperlukan untuk menyimpan.

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;

Semua pemalar jenis bentuk berada dalam org.aspose.slides.foss.ShapeType. Enum pemformatan (FillType, NullableBool) juga berada dalam org.aspose.slides.foss.


Langkah 3: Buat Persembahan

Gunakan new Presentation() dan balutkan ia dalam try-with-resources. Pembentangan baru bermula dengan satu slaid kosong.

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

Penting: Sentiasa gunakan try-with-resources atau panggil prs.dispose() dalam blok finally. Sumber tidak akan dilepaskan dengan betul jika tidak.


Langkah 4: Akses Slaid

Slaid pertama berada pada indeks 0. Persembahan kosong mempunyai tepat satu slaid.

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

Langkah 5: Tambah Bentuk

Gunakan slide.getShapes().addAutoShape() untuk menambah AutoShape. Parameter ialah (shapeType, x, y, width, height) semua dalam titik (1 titik = 1/72 inci; slaid standard ialah 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);
}

Langkah 6: Simpan Persembahan

Panggil prs.save(path, SaveFormat.PPTX) sebelum blok try keluar. PPTX adalah satu-satunya format output yang disokong.

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

Fail ditulis secara atomik; jika ralat berlaku sebelum panggilan ini, tiada fail output yang dibuat.


Contoh Kerja Lengkap

Program berikut menghasilkan persembahan dua slaid dengan bentuk tajuk pada slaid pertama dan jadual pada slaid kedua.

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

Isu Umum dan Penyelesaian

IllegalStateException: Presentation already disposed

Anda memanggil kaedah pada objek Presentation selepas blok try‑with‑resources telah berakhir. Sentiasa letakkan semua kerja di dalam blok try.

UnsupportedOperationException semasa menyimpan

Ini berlaku apabila cuba menyimpan dalam format selain PPTX, atau apabila menggunakan ciri yang tidak disokong (seperti carta atau animasi).

Bentuk muncul di luar kawasan slaid yang dapat dilihat

Slaid berukuran 720 × 540 mata secara lalai. Simpan x + width <= 720 dan y + height <= 540.


Soalan Lazim

Apakah saiz slaid lalai?

Satu Presentation() baru mencipta slaid pada saiz standard 10 × 7.5 inci (720 × 540 titik). Menukar saiz slaid belum disokong dalam edisi ini.

Bolehkah saya menambah lebih daripada satu slaid?

Ya. Panggil prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)) untuk menambah slaid kosong dan mengaksesnya mengikut indeks:

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

Bolehkah saya membuka fail sedia ada dan menambah slaid?

Ya:

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

Format apa yang boleh saya simpan?

Hanya SaveFormat.PPTX disokong. Eksport ke PDF, HTML, SVG, atau imej tidak tersedia dalam edisi ini.


Lihat Juga

 Bahasa Melayu