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
| 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 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.