باز کردن ارائهها در Java
معرفی
علاوه بر ساخت ارائههای PowerPoint از صفر، Aspose.Slides همچنین به شما اجازه میدهد ارائههای موجود را باز کنید. پس از بارگذاری یک ارائه، میتوانید اطلاعات آن را بازیابی کنید، محتوای اسلایدها را ویرایش کنید، اسلایدهای جدید اضافه کنید، اسلایدهای موجود را حذف کنید و غیره.
باز کردن ارائهها
برای باز کردن یک ارائه موجود، کلاس Presentation را نمونهسازی کنید و مسیر فایل را به سازنده آن پاس دهید.
مثال زیر به زبان Java نشان میدهد چگونه یک ارائه را باز کنید و تعداد اسلایدهای آن را دریافت کنید:
// یک نمونه از کلاس Presentation ایجاد کنید و مسیر فایل را به سازنده آن پاس دهید.
Presentation presentation = new Presentation("Sample.pptx");
try {
// تعداد کل اسلایدهای موجود در ارائه را چاپ کنید.
System.out.println(presentation.getSlides().size());
} finally {
presentation.dispose();
}
باز کردن ارائههای محافظتشده با رمز عبور
زمانی که نیاز به باز کردن یک ارائه محافظتشده با رمز عبور دارید، رمز عبور را از طریق متد setPassword کلاس LoadOptions به منظور رمزگشایی و بارگذاری ارائه پاس بدهید. کد Java زیر این عملیات را نشان میدهد:
LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");
Presentation presentation = new Presentation("Sample.pptx", loadOptions);
try {
// عملیات روی ارائه رمزگشاییشده را انجام دهید.
} finally {
presentation.dispose();
}
باز کردن ارائههای بزرگ
Aspose.Slides گزینههایی ارائه میدهد—بهویژه متد getBlobManagementOptions در کلاس LoadOptions—تا به شما در بارگذاری ارائههای بزرگ کمک کند.
کد Java زیر بارگذاری یک ارائه بزرگ (بهعنوان مثال، ۲ گیگابایت) را نشان میدهد:
final String filePath = "LargePresentation.pptx";
LoadOptions loadOptions = new LoadOptions();
// رفتار KeepLocked را انتخاب کنید—فایل ارائه برای طول عمر
// شیء Presentation، اما نیازی به بارگذاری در حافظه یا کپی به فایل موقت نیست.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 مگابایت
Presentation presentation = new Presentation(filePath, loadOptions);
try {
// ارائه بزرگ بارگذاری شد و میتواند استفاده شود، در حالی که مصرف حافظه کم میماند.
// تغییرات را بر روی ارائه اعمال کنید.
presentation.getSlides().get_Item(0).setName("Large presentation");
// ارائه را در فایل دیگری ذخیره کنید. در طول این عملیات مصرف حافظه کم میماند.
presentation.save("LargePresentation-copy.pptx", SaveFormat.Pptx);
// این کار را نکنید! یک استثنای I/O صادر میشود زیرا فایل تا زمانی که شیء Presentation آزاد نشود قفل است.
//Files.delete(Paths.get(filePath));
} finally {
presentation.dispose();
}
// این کار در اینجا مجاز است. فایل منبع دیگر توسط شیء Presentation قفل نیست.
Files.delete(Paths.get(filePath));
Info
برای دور زدن برخی محدودیتها هنگام کار با جریانها، Aspose.Slides ممکن است محتوای یک جریان را کپی کند. بارگذاری یک ارائه بزرگ از یک جریان باعث میشود که ارائه کپی شود و میتواند سرعت بارگذاری را کاهش دهد. بنابراین، زمانی که نیاز به بارگذاری یک ارائه بزرگ دارید، بهشدید توصیه میکنیم از مسیر فایل ارائه بهجای یک جریان استفاده کنید.
هنگام ایجاد یک ارائه که شامل اشیای بزرگ (ویدئو، صدا، تصاویر با وضوح بالا و غیره) باشد، میتوانید از BLOB management برای کاهش مصرف حافظه استفاده کنید.
کنترل منابع خارجی
Aspose.Slides رابط IResourceLoadingCallback را فراهم میکند که به شما امکان مدیریت منابع خارجی را میدهد. کد Java زیر نشان میدهد چگونه از اینترفیس IResourceLoadingCallback استفاده کنید:
LoadOptions loadOptions = new LoadOptions();
loadOptions.setResourceLoadingCallback(new ImageLoadingHandler());
Presentation presentation = new Presentation("Sample.pptx", loadOptions);
class ImageLoadingHandler implements IResourceLoadingCallback {
public int resourceLoading(IResourceLoadingArgs args) {
if (args.getOriginalUri().endsWith(".jpg")) {
try {
// بارگذاری یک تصویر جایگزین.
byte[] imageData = Files.readAllBytes(new File("aspose-logo.jpg").toPath());
args.setData(imageData);
return ResourceLoadingAction.UserProvided;
} catch (RuntimeException ex) {
return ResourceLoadingAction.Skip;
} catch (IOException ex) {
ex.printStackTrace();
}
} else if (args.getOriginalUri().endsWith(".png")) {
// تنظیم URL جایگزین.
args.setUri("http://www.google.com/images/logos/ps_logo2.png");
return ResourceLoadingAction.Default;
}
// از تمام تصاویر دیگر عبور کنید.
return ResourceLoadingAction.Skip;
}
}
بارگذاری ارائهها بدون اشیای باینری جاسازیشده
یک ارائه PowerPoint میتواند انواع زیر از اشیای باینری جاسازیشده را داشته باشد:
- پروژه VBA (accessible via IPresentation.getVbaProject);
- دادههای جاسازیشده شیء OLE (accessible via IOleEmbeddedDataInfo.getEmbeddedFileData);
- دادههای باینری کنترل ActiveX (accessible via IControl.getActiveXControlBinary).
با استفاده از متد ILoadOptions.setDeleteEmbeddedBinaryObjects میتوانید یک ارائه را بدون هیچیک از اشیای باینری جاسازیشده بارگذاری کنید.
این متد برای حذف محتوای باینری که ممکن است مخرب باشد مفید است. کد Java زیر نشان میدهد چگونه یک ارائه را بدون هیچ محتوای باینری جاسازیشدهای بارگذاری کنید:
LoadOptions loadOptions = new LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);
Presentation presentation = new Presentation("malware.ppt", loadOptions);
try {
// عملیات روی ارائه را انجام دهید.
} finally {
presentation.dispose();
}
سوالات متداول
چگونه میتوانم تشخیص دهم که یک فایل خراب است و نمیتوان آن را باز کرد؟
هنگام بارگذاری، یک استثنای تجزیه/اعتبارسنجی فرمت دریافت خواهید کرد. این گونه خطاها اغلب ساختار ZIP نامعتبر یا رکوردهای خراب PowerPoint را ذکر میکنند.
اگر فونتهای مورد نیاز هنگام باز کردن موجود نباشند چه اتفاقی میافتد؟
فایل باز میشود، اما بعداً ممکن است در rendering/export فونتها جایگزین شوند. برای جلوگیری از این امر میتوانید Configure font substitutions یا add the required fonts را به محیط زمان اجرا اضافه کنید.
در مورد رسانههای جاسازیشده (ویدئو/صدا) هنگام باز کردن چه میشود؟
آنها بهعنوان منابع ارائه در دسترس میشوند. اگر رسانهها از طریق مسیرهای خارجی ارجاع شوند، اطمینان حاصل کنید این مسیرها در محیط شما قابل دسترسی باشند؛ در غیر این صورت ممکن است rendering/export رسانهها را حذف کند.