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
| Format | Nilai Enum | Disokong |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | Ya |
| N/A | Tidak | |
| HTML | N/A | Tidak |
| SVG | N/A | Tidak |
| PNG / JPEG | N/A | Tidak |
| ODP (OpenDocument) | N/A | Tidak |
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.