چگونه ارائهها را در جاوا ذخیره کنیم
Aspose.Slides FOSS for Java ارائهها را بهطور انحصاری به فرمت .pptx با استفاده از prs.save(path, SaveFormat.PPTX) ذخیره میکند. این راهنما الگوی صحیح ذخیرهسازی، ذخیره در مسیر متفاوت و خطاهای رایج مرتبط با ذخیرهسازی را پوشش میدهد.
راهنمای گام به گام
مرحله 1: افزودن وابستگی Maven
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>مرحله ۲: باز کردن یا ایجاد یک ارائه
همیشه از try-with-resources استفاده کنید. فراخوانی save باید داخل بلوک 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);
}مرحله ۳: ذخیره پس از تمام تغییرات
دستور save() را به عنوان آخرین عبارت داخل بلوک 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;
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);
}مرحله ۴: ذخیره در مسیر متفاوت
یک مسیر خروجی متفاوت را پاس دهید تا یک فایل جدید ایجاد کنید بدون اینکه فایل اصلی را تغییر دهید:
try (Presentation prs = new Presentation("template.pptx")) {
// modify ...
prs.save("customized.pptx", SaveFormat.PPTX);
}فایل template.pptx تغییر نمیکند؛ customized.pptx ایجاد میشود (یا اگر از قبل وجود داشته باشد بازنویسی میشود).
مرحله 5: خروجی را تأیید کنید
پس از خروج از بلوک try، فایل کامل شده و بسته میشود. وجود آن را بررسی کنید:
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 | Enum Value | Supported |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | بله |
| N/A | خیر | |
| HTML | N/A | خیر |
| SVG | N/A | خیر |
| PNG / JPEG | N/A | خیر |
| ODP (OpenDocument) | N/A | خیر |
فقط PPTX بهطور کامل پشتیبانی میشود. ارسال هر مقدار SaveFormat دیگری به prs.save(path, format) بهصورت ساکت بهعنوان PPTX ذخیره میشود — هیچ استثنائی پرتاب نمیشود و آرگومان فرمت نادیده گرفته میشود. UnsupportedOperationException فقط توسط prs.save(ISaveOptions options) پرتاب میشود، نه توسط بارگذاریهای مبتنی بر فرمت.
مسائل رایج و راهحلها
java.io.IOException: Permission denied
فایل خروجی در برنامهای دیگر باز است (مثلاً PowerPoint فایل را باز دارد). قبل از ذخیرهسازی، فایل را در برنامههای دیگر ببندید.
فایل ایجاد میشود اما خالی یا خراب به نظر میرسد
اطمینان حاصل کنید prs.save() داخل بلوک try فراخوانی شود، نه پس از آن. پس از خروج از بلوک try-with-resources، شیء Presentation از بین میرود و فراخوانیهای بعدی شکست خواهند خورد.
UnsupportedOperationException هنگام ذخیرهسازی
این هنگام استفاده از prs.save(ISaveOptions options) رخ میدهد — overload مبتنی بر ISaveOptions پیادهسازی نشده است. توجه: ارسال یک SaveFormat غیر‑PPTX به prs.save(path, format) نه باعث پرتاب این استثنا میشود؛ بهصورت ساکت به عنوان PPTX ذخیره میگردد.
سوالات متداول
آیا میتوانم در همان فایلی که باز کردم ذخیره کنم؟
بله. ذخیرهسازی در همان مسیر، فایل اصلی را بازنویسی میکند:
try (Presentation prs = new Presentation("deck.pptx")) {
// modify ...
prs.save("deck.pptx", SaveFormat.PPTX); // overwrites original
}آیا میتوانم به یک OutputStream ذخیره کنم؟
بله. متد save() یک OutputStream میپذیرد:
import java.io.FileOutputStream;
try (Presentation prs = new Presentation();
FileOutputStream fos = new FileOutputStream("output.pptx")) {
prs.save(fos, SaveFormat.PPTX);
}آیا ذخیرهسازی محتوایی که من تغییر ندادهام را حفظ میکند؟
بله. بخشهای XML ناشناخته از فایل اصلی بهصورت دقیق حفظ میشوند. کتابخانه فقط بخشهای مدل سند را که میفهمد سریالسازی میکند و هر XMLی که تشخیص نمیدهد را عبور میدهد.