عملیات ارائه با کد کم در جاوااسکریپت
مروری
فضاینام aspose.slides کلاسهای کمکی ایستاتیک برای عملیات رایج ارائهها را فراهم میکند. این کمکیها جریانهای کاری مدل‑شیء پرکاربرد را در متدهای متمرکز میپیچند، به طوری که میتوانید فایلها را تبدیل یا ادغام کنید، عناصر ارائه را پردازش کنید، شکلها را جمعآوری کنید و محتوای استفادهنشده را با کد کمتر حذف کنید.
کمککنندههای کمکد زمانی مفیدترین هستند که عملیات بر روی یک فایل یا ارائه کامل اعمال میشود و جریان کاری پیشفرض با نیازهای شما مطابقت دارد. هنگام نیاز به کنترل دقیق بر اسلایدها، مسترها، لایهها، شکلها، تنظیمات صادرات یا رابطه بین عناصر ارائه، از مدل شیء Aspose.Slides کامل استفاده کنید.
جدول زیر خلاصهای از کمککنندههای موجود را ارائه میدهد:
| کمککننده | موارد استفاده |
|---|---|
| Convert | تبدیل یک ارائه به قالب دیگر با فراخوانی مستقیم فایل‑به‑فایل. |
| Merger | ترکیب کامل فایلهای ارائهای با همان قالب. |
| ForEach | اجرای عملی برای هر اسلاید، شکل، پاراگراف یا قسمت متن. |
| Collect | بهدست آوردن شکلها از کل ارائه برای پردازش یا تجزیه و تحلیل مکرر. |
| Compress | حذف مسترها و لایههای استفادهنشده و کاهش دادههای فونتهای توکار. |
تبدیل یک ارائه
از Convert.autoByExtension زمانی استفاده کنید که پسوند فایل خروجی به تنهایی برای انتخاب فرمت صادرات کافی باشد. این متد ارائه منبع را باز میکند، فرمت مورد نیاز را از مسیر خروجی تعیین مینماید و نتیجه را مینویسد.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
aspose.slides.Convert.autoByExtension("input.pptx", "output.pdf");
کلاس Convert همچنین متدهای اختصاصی برای خروجی PDF، SVG، JPEG، PNG و TIFF را فراهم میکند. هنگامی که نیاز به بازرسی یا تغییر ارائه قبل از صادرات یا تنظیم گزینهای دارید که توسط کمککننده در دسترس نیست، از مدل شیء کامل استفاده کنید. برای گردشکارها و گزینههای خاص هر فرمت، به تبدیل ارائه مراجعه کنید.
ادغام ارائهها
از Merger.process برای ترکیب کامل فایلهای ارائهای با یک فراخوانی استفاده کنید. ارائههای ورودی باید همان قالب فایل را داشته باشند.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const inputFiles = ["first.pptx", "second.pptx"];
aspose.slides.Merger.process(inputFiles, "merged.pptx");
این کمککننده زمانی مناسب است که تمام اسلایدها باید بدون انتخاب یا بازنگری جداگانه به یک نتیجه اضافه شوند. هنگامی که نیاز به ادغام اسلایدهای انتخابی، اعمال مستر یا لایه مقصد، حفظ بخشها بهصورت صریح یا تطبیق اندازههای مختلف اسلاید دارید، از مدل شیء کامل استفاده کنید. برای این سناریوها به ادغام ارائهها نگاه کنید.
تکرار بر روی عناصر ارائه
کلاس ForEach برای هر نوع عنصر درخواستشدهٔ ارائه یک کالبک فراخوانی میکند. این کار حلقههای تو در توی جمعآوری را حذف میکند و برای بازرسی یا تغییرات سراسری مفید است. در Node.js، پیادهسازیهای این کالبکها را میتوانید با java.newProxy ایجاد کنید.
مثال زیر از ForEach.slide، ForEach.shape، ForEach.paragraph و ForEach.portion برای بازرسی عناصر مربوطه استفاده میکند:
const java = require("java");
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const slideCallback = java.newProxy("com.aspose.slides.ForEach$ForEachSlideCallback", {
invoke: function (slide, index) {
console.log(`Slide ${index}: ${slide.getShapes().size()} shapes`);
}
});
aspose.slides.ForEach.slide(presentation, slideCallback);
const shapeCallback = java.newProxy("com.aspose.slides.ForEach$ForEachShapeCallback", {
invoke: function (shape, slide, index) {
console.log(`Shape ${index} on ${slide.getClass().getSimpleName()}: ${shape.getName()}`);
}
});
aspose.slides.ForEach.shape(presentation, shapeCallback);
const paragraphCallback = java.newProxy("com.aspose.slides.ForEach$ForEachParagraphCallback", {
invoke: function (paragraph, slide, index) {
console.log(`Paragraph ${index} on ${slide.getClass().getSimpleName()}: ${paragraph.getText()}`);
}
});
aspose.slides.ForEach.paragraph(presentation, paragraphCallback);
const portionCallback = java.newProxy("com.aspose.slides.ForEach$ForEachPortionCallback", {
invoke: function (portion, paragraph, slide, index) {
console.log(`Portion ${index} on ${slide.getClass().getSimpleName()}: ${portion.getText()}`);
}
});
aspose.slides.ForEach.portion(presentation, portionCallback);
} finally {
presentation.dispose();
}
بهصورت پیشفرض، عبور سراسری بر شکلها و متن شامل اسلایدهای عادی، مستر و لایه میشود. بارگذاریهای دیگری با پارامتر includeNotes میتوانند اسلایدهای یادداشتها را نیز پردازش کنند. وقتی ترتیب عبور، خروج زودهنگام، فیلترینگ قبل از فراخوانی کالبک یا کنترل والد‑فرزندی دقیق مهم باشد، از حلقههای جمعآوری مستقیم استفاده کنید.
جمعآوری شکلها
از Collect.shapes زمانی استفاده کنید که به یک مجموعهٔ تمام شکلهای یک ارائه نیاز دارید نه یک کالبک برای هر شکل. این روش زمانی مفید است که همان مجموعه بهصورت مکرر فیلتر، شمارش یا پردازش شود.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const shapes = aspose.slides.Collect.shapes(presentation);
const iterator = shapes.iterator();
while (iterator.hasNext()) {
const shape = iterator.next();
console.log(`${shape.getName()}: ${shape.getClass().getSimpleName()}`);
}
} finally {
presentation.dispose();
}
در صورتی که هر شکل میتواند بلافاصله پردازش شود و نیازی به نگهداری نتیجه جمعآوریشده ندارید، به جای آن از ForEach.shape استفاده کنید.
فشردهسازی محتوای ارائه
کلاس Compress میتواند عناصر ساختاری استفادهنشده را حذف کرده و دادههای فونتهای توکار را کاهش دهد:
- Compress.removeUnusedLayoutSlides لایههایی را که هیچ اسلاید عادی به آنها ارجاع نمیدهد، حذف میکند.
- Compress.removeUnusedMasterSlides مسترهایی را که دیگر استفاده نمیشوند، حذف میکند.
- Compress.compressEmbeddedFonts کاراکترهای استفادهنشدۀ فونتهای توکار را حذف میکند.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const presentation = new aspose.slides.Presentation("input.pptx");
try {
aspose.slides.Compress.removeUnusedLayoutSlides(presentation);
aspose.slides.Compress.removeUnusedMasterSlides(presentation);
aspose.slides.Compress.compressEmbeddedFonts(presentation);
presentation.save("compressed.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
ابتدا لایههای استفادهنشده را حذف کنید، سپس مسترهای استفادهنشده؛ به این ترتیب مستری که پس از پاکسازی لایهها دیگر ارجاع ندارد، نیز حذف میشود. برای حفظ مسترها، لایهها یا دادههای کامل فونتهای توکار، ارائه بهینهشده را در فایلی جدید ذخیره کنید. برای جزئیات بیشتر، به مستری اسلاید و فونت توکار مراجعه کنید.
پرسشهای متداول
چه موقع باید از API کمکد بهجای مدل شیء کامل استفاده کنم؟
وقتی یک عملیات استاندارد بر روی یک فایل یا ارائهٔ کامل اعمال میشود و نیازی به کنترل دقیق بر عناصر منفرد نیست، از کمککنندههای کمکد استفاده کنید. برای انتخاب اسلایدهای خاص، کنترل روابط مستر و لایه، بازرسی وضعیت میانی یا تنظیم رفتاری که توسط کمککننده ارائه نمیشود، از مدل شیء کامل استفاده کنید.
آیا Merger میتواند ارائهها را در قالبهای فایل متفاوت ترکیب کند؟
خیر. متد Merger.process نیاز دارد که همهٔ ارائههای ورودی یک قالب داشته باشند. ابتدا فایلهای ورودی را با نمونهای مانند Convert.autoByExtension به قالب مشترک تبدیل کنید، سپس آنها را ادغام کنید.
آیا ForEach مستر، لایه و اسلایدهای یادداشت را پردازش میکند؟
متد ForEach.slide فقط اسلایدهای عادی ارائه را مرور میکند. عملیات سراسری ForEach.shape، ForEach.paragraph و ForEach.portion بهصورت پیشفرض شامل اسلایدهای عادی، مستر و لایه هستند. برای شامل کردن اسلایدهای یادداشت، از بارگذاریهایی که پارامتر includeNotes را به true تنظیم میکنند، استفاده کنید.
فرق بین ForEach.shape و Collect.shapes چیست؟
اگر میخواهید هر شکل را بلافاصله با کالبک پردازش کنید، از ForEach.shape استفاده کنید. اگر به یک نتیجهٔ قابل تکرار (قابل نگهداری، فیلتر یا شمارش) نیاز دارید، از Collect.shapes استفاده کنید.
آیا Compress همیشه اندازهٔ فایل ارائه را کاهش میدهد؟
لزومی نیست. نتیجه بستگی به این دارد که آیا ارائه شامل لایهها یا مسترهای استفادهنشده یا فونتهای توکار با کاراکترهای غیرمصرف است یا نه. اگر هیچیک از این موارد وجود نداشته باشد، عملیات مربوط به Compress ممکن است اندازهٔ فایل را کاهش ندهد.
آیا تغییرات اعمالشده توسط ForEach یا Compress بهصورت خودکار ذخیره میشوند؟
خیر. این کمککنندهها بر روی شیء Presentation بارگذاریشده در حافظه عمل میکنند. پس از تغییر عناصر در کالبک ForEach یا اجرای Compress، برای نوشتن نتیجه باید متد Presentation.save را فراخوانی کنید.