باز کردن ارائهها در JavaScript
مقدمه
علاوه بر ایجاد ارائههای PowerPoint از ابتدا، Aspose.Slides همچنین امکان باز کردن ارائههای موجود را فراهم میکند. پس از بارگذاری یک ارائه، میتوانید اطلاعات مربوط به آن را بازیابی کنید، محتوای اسلایدها را ویرایش کنید، اسلایدهای جدید اضافه کنید، اسلایدهای موجود را حذف کنید و کارهای بیشتری انجام دهید.
باز کردن ارائهها
برای باز کردن یک ارائه موجود، کلاس Presentation را نمونهسازی کنید و مسیر فایل را به سازنده آن پاس بدهید.
مثال زیر در JavaScript نشان میدهد چگونه یک ارائه را باز کنید و تعداد اسلایدهای آن را دریافت کنید:
// یک نمونه از کلاس Presentation ایجاد کنید و مسیر فایل را به سازنده آن پاس دهید.
let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
// تعداد کل اسلایدهای موجود در ارائه را چاپ کنید.
console.log(presentation.getSlides().size());
} finally {
presentation.dispose();
}
باز کردن ارائههای محافظتشده با رمز عبور
هنگامی که نیاز به باز کردن ارائهای دارید که با رمز عبور محافظت میشود، رمز عبور را از طریق متد setPassword کلاس LoadOptions ارسال کنید تا آن را رمزگشایی و بارگذاری کنید. کد زیر در JavaScript این عملیات را نشان میدهد:
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");
let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
try {
// عملیات روی ارائه رمزگشاییشده را انجام دهید.
} finally {
presentation.dispose();
}
باز کردن ارائههای بزرگ
Aspose.Slides گزینههایی—بهویژه متد getBlobManagementOptions در کلاس LoadOptions—برای کمک به بارگذاری ارائههای بزرگ ارائه میدهد.
کد زیر در JavaScript بارگذاری یک ارائه بزرگ (به عنوان مثال ۲ گیگابایت) را نشان میدهد:
const filePath = "LargePresentation.pptx";
let loadOptions = new aspose.slides.LoadOptions();
// انتخاب رفتار KeepLocked — فایل ارائه برای طول عمر
// نمونه Presentation، اما نیازی به بارگیری در حافظه یا کپی به فایل موقت نیست.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(aspose.slides.PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // ۱۰ مگابایت
let presentation = new aspose.slides.Presentation(filePath, loadOptions);
try {
// ارائه بزرگ بارگذاری شده و قابل استفاده است، در حالی که مصرف حافظه پایین باقی میماند.
// تغییرات مورد نیاز را در ارائه اعمال کنید.
presentation.getSlides().get_Item(0).setName("Large presentation");
// ارائه را در فایل دیگری ذخیره کنید. در حین این عملیات مصرف حافظه کم میماند.
presentation.save("LargePresentation-copy.pptx", aspose.slides.SaveFormat.Pptx);
// این کار را انجام ندهید! یک استثنای I/O پرتاب میشود زیرا فایل تا زمان آزادسازی شیء Presentation قفل است.
//fs.unlinkSync(filePath);
} finally {
presentation.dispose();
}
// در اینجا انجام دادن آن اشکالی ندارد. فایل منبع دیگر توسط شیء Presentation قفل نشده است.
fs.unlinkSync(filePath);
Info
برای دور زدن برخی محدودیتها هنگام کار با جریانها، Aspose.Slides ممکن است محتوای یک جریان را کپی کند. بارگذاری یک ارائه بزرگ از یک جریان باعث کپی شدن ارائه میشود و میتواند سرعت بارگذاری را کاهش دهد. بنابراین، زمانی که نیاز به بارگذاری یک ارائه بزرگ دارید، شدیداً توصیه میکنیم بهجای استفاده از جریان، مسیر فایل ارائه را استفاده کنید.
هنگامی که یک ارائه شامل اشیاء بزرگ (ویدئو، صدا، تصاویر با وضوح بالا و غیره) است، میتوانید از مدیریت BLOB برای کاهش مصرف حافظه استفاده کنید.
کنترل منابع خارجی
Aspose.Slides رابط IResourceLoadingCallback را فراهم میکند که به شما امکان مدیریت منابع خارجی را میدهد. کد زیر در JavaScript نشان میدهد چگونه از رابط IResourceLoadingCallback استفاده کنید:
const ImageLoadingHandler = java.newProxy("com.aspose.slides.IResourceLoadingCallback", {
resourceLoading: function(args) {
if (args.getOriginalUri().endsWith(".jpg")) {
try {
// بارگذاری یک تصویر جایگزین.
const imageData = fs.readFileSync("aspose-logo.jpg");
args.setData(imageData);
return aspose.slides.ResourceLoadingAction.UserProvided;
} catch {
return aspose.slides.ResourceLoadingAction.Skip;
}
} else if (args.getOriginalUri().endsWith(".png")) {
// تنظیم یک URL جایگزین.
args.setUri("http://www.google.com/images/logos/ps_logo2.png");
return aspose.slides.ResourceLoadingAction.Default;
}
// نادیده گرفتن تمام تصاویر دیگر.
return aspose.slides.ResourceLoadingAction.Skip;
}
});
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setResourceLoadingCallback(ImageLoadingHandler);
let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
بارگذاری ارائهها بدون اشیاء باینری جاسازیشده
یک ارائه PowerPoint میتواند شامل انواع زیر از اشیاء باینری جاسازیشده باشد:
- پروژه VBA (دسترسپذیر از طریق Presentation.getVbaProject);
- دادههای جاسازی شده OLE (دسترسپذیر از طریق OleEmbeddedDataInfo.getEmbeddedFileData);
- دادههای باینری کنترل ActiveX (دسترسپذیر از طریق Control.getActiveXControlBinary).
با استفاده از متد LoadOptions.setDeleteEmbeddedBinaryObjects میتوانید یک ارائه را بدون هیچگونه شیء باینری جاسازیشدهای بارگذاری کنید.
این متد برای حذف محتوای باینری احتمالی مخرب مفید است. کد زیر در JavaScript نحوه بارگذاری یک ارائه بدون هرگونه محتوا باینری جاسازیشده را نشان میدهد:
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);
let presentation = new aspose.slides.Presentation("malware.ppt", loadOptions);
try {
// عملیات روی ارائه را انجام دهید.
} finally {
presentation.dispose();
}
سوالات متداول
چگونه میتوانم بفهمم که یک فایل خراب است و نمیتوان آن را باز کرد؟
در هنگام بارگذاری، یک استثنای تجزیه/اعتبارسندی فرمت دریافت میکنید. چنین خطاهایی اغلب به ساختار ZIP نامعتبر یا رکوردهای خراب PowerPoint اشاره میکنند.
اگر فونتهای مورد نیاز هنگام باز کردن موجود نباشند چه میشود؟
فایل باز میشود، اما پس از آن ممکن است هنگام رندر/خروجی فونتها جایگزین شوند. میتوانید جایگزینی فونتها را پیکربندی کنید یا فونتهای مورد نیاز را اضافه کنید به محیط زمان اجرا.
در مورد رسانههای جاسازیشده (ویدئو/صدا) هنگام باز کردن چه اتفاقی میافتد؟
آنها به عنوان منابع ارائه در دسترس میشوند. اگر رسانهها از طریق مسیرهای خارجی ارجاع داده شوند، اطمینان حاصل کنید که این مسیرها در محیط شما قابل دسترسی باشد؛ در غیر این صورت ممکن است هنگام رندر/خروجی رسانهها حذف شوند.