Cara Menyimpan Persembahan dalam Java

Cara Menyimpan Persembahan dalam Java

Aspose.Slides FOSS for Java saves presentations exclusively to .pptx format menggunakan prs.save(path, SaveFormat.PPTX). Panduan ini merangkumi corak simpan yang betul, menyimpan ke laluan yang berbeza, dan ralat biasa yang berkaitan dengan penyimpanan.

Panduan Langkah demi Langkah

Langkah 1: Tambah Kebergantungan Maven

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

Langkah 2: Buka atau Cipta Persembahan

Sentiasa gunakan try-with-resources. Panggilan save mesti dilakukan di dalam blok try.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;

// Create new
try (Presentation prs = new Presentation()) {
    prs.save("new.pptx", SaveFormat.PPTX);
}

// Open existing
try (Presentation prs = new Presentation("input.pptx")) {
    prs.save("output.pptx", SaveFormat.PPTX);
}

Langkah 3: Simpan Selepas Semua Pengubahsuaian

Letakkan save() panggilan sebagai pernyataan terakhir di dalam blok try, selepas semua pengubahsuaian selesai.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 300, 100
    );
    shape.addTextFrame("Hello, World!");
    prs.save("output.pptx", SaveFormat.PPTX);
}

Langkah 4: Simpan ke Laluan yang Berbeza

Berikan laluan output yang berbeza untuk mencipta fail baru tanpa mengubah asal:

try (Presentation prs = new Presentation("template.pptx")) {
    // modify ...
    prs.save("customized.pptx", SaveFormat.PPTX);
}

The template.pptx fail tidak diubah; customized.pptx dicipta (atau ditulis semula jika ia sudah wujud).


Langkah 5: Sahkan Output

Selepas blok try berakhir, fail sudah lengkap dan ditutup. Periksa ia wujud:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

Path output = Paths.get("output.pptx");
System.out.println("Saved: " + Files.exists(output)
    + ", size: " + Files.size(output) + " bytes");

Format Simpan yang Disokong

FormatNilai EnumDisokong
PPTX (Office Open XML)SaveFormat.PPTXYa
PDFN/ATidak
HTMLN/ATidak
SVGN/ATidak
PNG / JPEGN/ATidak
ODP (OpenDocument)N/ATidak

Hanya PPTX disokong sepenuhnya. Menyerahkan apa-apa yang lain SaveFormat nilai kepada prs.save(path, format) menyimpan secara senyap sebagai PPTX — tiada pengecualian dibuang dan argumen format diabaikan. UnsupportedOperationException hanya dibuang oleh prs.save(ISaveOptions options), bukan oleh overload berasaskan format.


Isu Umum dan Penyelesaian

java.io.IOException: Permission denied

Fail output dibuka dalam aplikasi lain (contoh, PowerPoint mempunyai fail terbuka). Tutup fail dalam aplikasi lain sebelum menyimpan.

Fail dicipta tetapi kelihatan kosong atau rosak

Pastikan prs.save() dipanggil di dalam blok try, bukan selepasnya. Selepas blok try-with-resources keluar, Presentation objek dibuang dan panggilan seterusnya akan gagal.

UnsupportedOperationException apabila menyimpan

Ini berlaku apabila menggunakan prs.save(ISaveOptions options) — the ISaveOptions-based overload tidak dilaksanakan. Nota: menghantar bukan-PPTX SaveFormat kepada prs.save(path, format) melakukan tidak melempar pengecualian ini; ia menyimpan secara senyap sebagai PPTX.


Soalan Lazim

Bolehkah saya menyimpan ke fail yang sama yang saya buka?

Ya. Menyimpan ke laluan yang sama akan menulis semula fail asal:

try (Presentation prs = new Presentation("deck.pptx")) {
    // modify ...
    prs.save("deck.pptx", SaveFormat.PPTX);  // overwrites original
}

Bolehkah saya menyimpan ke OutputStream?

Ya. The save() method menerima satu OutputStream:

import java.io.FileOutputStream;

try (Presentation prs = new Presentation();
     FileOutputStream fos = new FileOutputStream("output.pptx")) {
    prs.save(fos, SaveFormat.PPTX);
}

Adakah penyimpanan mengekalkan kandungan yang tidak saya ubah?

Ya. Bahagian XML yang tidak dikenali daripada fail asal dipelihara secara tepat. Perpustakaan hanya menserialkan bahagian model dokumen yang difahaminya, dan meneruskan sebarang XML yang tidak dikenali.


Lihat Juga

 Bahasa Melayu