Cara Menyimpan Pembentangan dalam Java

Cara Menyimpan Pembentangan dalam Java

Aspose.Slides FOSS for Java menyimpan persembahan secara eksklusif ke format .pptx 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: Tambahkan 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 berlaku 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 panggilan save() 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 Berbeza

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

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

Fail template.pptx tidak diubah; customized.pptx dibuat (atau ditimpa jika sudah wujud).


Langkah 5: Sahkan Output

Selepas blok try keluar, fail telah 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 Simpanan 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 yang disokong sepenuhnya. Melewatkan sebarang nilai SaveFormat lain kepada prs.save(path, format) secara senyap menyimpan sebagai PPTX — tiada pengecualian dilemparkan dan argumen format diabaikan. UnsupportedOperationException hanya dilemparkan 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 (contohnya, 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 berakhir, objek Presentation akan dibuang dan panggilan seterusnya akan gagal.

UnsupportedOperationException semasa menyimpan

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


Soalan Lazim

Bolehkah saya menyimpan ke fail yang sama yang saya buka?

Ya. Menyimpan ke laluan yang sama akan menimpa fail asal:

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

Bolehkah saya menyimpan ke OutputStream?

Ya. Kaedah save() menerima OutputStream:

import java.io.FileOutputStream;

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

Adakah menyimpan mengekalkan kandungan yang tidak saya ubah?

Ya. Bahagian XML yang tidak diketahui dari fail asal dipelihara secara verbatim. Perpustakaan hanya menserialkan bahagian model dokumen yang difahaminya, dan meneruskan sebarang XML yang tidak dikenalnya.


Lihat Juga

 Bahasa Melayu