عملیات ارائه با کد-کم در C++

بررسی کلی

فضای نام Aspose::Slides::LowCode کلاس‌های کمکی استاتیک برای عملیات متداول ارائه فراهم می‌کند. این کمکی‌ها جریان‌های کاری مدلسازی شیء را که به‌صورت مکرر استفاده می‌شوند، در روش‌های متمرکز بسته‌بندی می‌کنند، بنابراین می‌توانید فایل‌ها را تبدیل یا ترکیب کنید، عناصر ارائه را پردازش کنید، اشکال را جمع‌آوری کنید و محتوای بلااستفاده را با کد کمتر حذف کنید.

کمک‌کننده‌های کد‑کم زمانی مفید هستند که عملیات بر روی یک فایل یا ارائه کامل اعمال می‌شود و گردش کار پیش‌فرض با نیازهای شما همخوانی دارد. هنگامی که به کنترل دقیق بر اسلایدهای فردی، الگوها، چیدمان‌ها، اشکال، تنظیمات خروجی یا روابط بین عناصر ارائه نیاز دارید، از مدل شیء کامل Aspose.Slides استفاده کنید.

جدول زیر خلاصه‌ای از کمک‌کننده‌های موجود را ارائه می‌دهد:

کمک‌کننده موارد استفاده
Convert تبدیل ارائه به قالب دیگر با فراخوانی مستقیم فایل‑به‑فایل.
Merger ترکیب کامل فایل‌های ارائه‌ای با همان قالب.
ForEach اجرای یک عمل برای هر اسلاید، شکل، پاراگراف یا بخش متنی.
Collect بازیابی اشکال از کل ارائه برای پردازش یا تجزیه و تحلیل مکرر.
Compress حذف الگوها و چیدمان‌های بلااستفاده و کاهش داده‌های فونت تعبیه‌شده.

تبدیل یک ارائه

از Convert::AutoByExtension استفاده کنید وقتی پسوند فایل خروجی به‌تنهایی کافی باشد تا قالب خروجی را انتخاب کند. این متد ارائه منبع را باز می‌کند، قالب مورد نیاز را از مسیر خروجی تعیین می‌کند و نتیجه را می‌نویسد.

#include <LowCode/Convert.h>

using namespace Aspose::Slides::LowCode;

Convert::AutoByExtension(u"input.pptx", u"output.pdf");

کلاس Convert همچنین روش‌های اختصاصی برای خروجی PDF، SVG، JPEG، PNG و TIFF ارائه می‌دهد. هنگامی که قبل از خروجی بررسی یا تغییر ارائه لازم است یا گزینهٔ خروجی‌ای که توسط کمک‌کننده در دسترس نیست را پیکربندی می‌کنید، از مدل شیء کامل استفاده کنید. برای گردش کارها و گزینه‌های خاص هر قالب، به بخش تبدیل ارائه مراجعه کنید.

ترکیب ارائه‌ها

از Merger::Process برای ترکیب کامل فایل‌های ارائه‌ای با یک فراخوانی استفاده کنید. ارائه‌های ورودی باید همان قالب فایل را داشته باشند.

#include <LowCode/Merger.h>
#include <system/array.h>
#include <system/string.h>

using namespace Aspose::Slides::LowCode;

auto inputFiles = System::MakeArray<System::String>({u"part-1.pptx", u"part-2.pptx"});
Merger::Process(inputFiles, u"merged.pptx");

این کمک‌کننده زمانی مناسب است که تمام اسلایدها باید بدون انتخاب یا بازنگری جداگانه به یک نتیجهٔ نهایی اضافه شوند. هنگامی که نیاز به ترکیب اسلایدهای منتخب، اعمال الگوی مقصد یا چیدمان، حفظ بخش‌ها به‌صورت صریح یا تطبیق اندازه‌های مختلف اسلاید دارید، از مدل شیء کامل استفاده کنید. برای این سناریوها به بخش ترکیب ارائه‌ها نگاه کنید.

پیمایش عناصر ارائه

کلاس ForEach برای هر نوع عنصر درخواست‌شده از ارائه یک فراخوانی بازخوردی اجرا می‌کند. این کار از حلقه‌های تو در توی جمع‌آوری جلوگیری می‌کند و برای بازرسی یا تغییر فرمت سراسری ارائه مناسب است.

مثال زیر از ForEach::Slide، ForEach::Shape، ForEach::Paragraph و ForEach::Portion برای بازرسی عناصر مربوطه استفاده می‌کند:

#include <DOM/BaseSlide.h>
#include <DOM/Paragraph.h>
#include <DOM/Portion.h>
#include <DOM/Presentation.h>
#include <DOM/Shape.h>
#include <DOM/Slide.h>
#include <LowCode/ForEach.h>
#include <system/console.h>
#include <system/shared_ptr.h>
#include <functional>

using namespace Aspose::Slides;
using namespace Aspose::Slides::LowCode;

auto presentation = System::MakeObject<Presentation>(u"input.pptx");

auto slideCallback = std::function<void(System::SharedPtr<Slide>, int32_t)>([](System::SharedPtr<Slide> slide, int32_t index)
{
    System::Console::WriteLine(u"Slide {0}: {1} shapes", index, slide->get_Shapes()->get_Count());
});
ForEach::Slide(presentation, slideCallback);

auto shapeCallback = std::function<void(System::SharedPtr<Shape>, System::SharedPtr<BaseSlide>, int32_t)>([](System::SharedPtr<Shape> shape, System::SharedPtr<BaseSlide> slide, int32_t index)
{
    System::Console::WriteLine(u"Shape {0}: {1}", index, shape->get_Name());
});
ForEach::Shape(presentation, shapeCallback);

auto paragraphCallback = std::function<void(System::SharedPtr<Paragraph>, System::SharedPtr<BaseSlide>, int32_t)>([](System::SharedPtr<Paragraph> paragraph, System::SharedPtr<BaseSlide> slide, int32_t index)
{
    System::Console::WriteLine(u"Paragraph {0}: {1}", index, paragraph->get_Text());
});
ForEach::Paragraph(presentation, paragraphCallback);

auto portionCallback = std::function<void(System::SharedPtr<Portion>, System::SharedPtr<Paragraph>, System::SharedPtr<BaseSlide>, int32_t)>([](System::SharedPtr<Portion> portion, System::SharedPtr<Paragraph> paragraph, System::SharedPtr<BaseSlide> slide, int32_t index)
{
    System::Console::WriteLine(u"Portion {0}: {1}", index, portion->get_Text());
});
ForEach::Portion(presentation, portionCallback);

به طور پیش‌فرض، پیمایش شکل‌ها و متن سراسری ارائه شامل اسلایدهای عادی، الگو و چیدمان می‌شود. overloadهایی با پارامتر includeNotes می‌توانند اسلایدهای یادداشت‌ها را نیز پردازش کنند. وقتی ترتیب پیمایش، خروج زودهنگام، فیلتر قبل از فراخوانی بازخورد یا کنترل دقیق والد‑فرزند مهم باشد، از حلقه‌های جمع‌آوری مستقیم استفاده کنید.

جمع‌آوری اشکال

وقتی به یک مجموعهٔ تمام اشکال موجود در یک ارائه نیاز دارید نه یک بازخورد برای هر شکل، از Collect::Shapes استفاده کنید. این کار زمانی مفید است که همان مجموعه برای فیلتر، شمارش یا پردازش چندبار استفاده شود.

#include <DOM/Presentation.h>
#include <DOM/Shape.h>
#include <LowCode/Collect.h>
#include <system/console.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::LowCode;

auto presentation = System::MakeObject<Presentation>(u"input.pptx");
auto shapes = Collect::Shapes(presentation);

for (const auto& shape : shapes)
{
    System::Console::WriteLine(shape->get_Name());
}

اگر می‌توانید هر شکل را بلافاصله پردازش کنید و نیازی به نگه داشتن نتیجهٔ جمع‌آوری‌شده ندارید، به جای آن از ForEach::Shape استفاده کنید.

فشرده‌سازی محتوای ارائه

کلاس Compress می‌تواند عناصر ساختاری بلااستفاده را حذف کرده و داده‌های فونت تعبیه‌شده را کاهش دهد:

#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <LowCode/Compress.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace Aspose::Slides::LowCode;

auto presentation = System::MakeObject<Presentation>(u"input.pptx");

Compress::RemoveUnusedLayoutSlides(presentation);
Compress::RemoveUnusedMasterSlides(presentation);
Compress::CompressEmbeddedFonts(presentation);

presentation->Save(u"compressed.pptx", SaveFormat::Pptx);

ابتدا چیدمان‌های بلااستفاده را حذف کنید و سپس الگوهای بلااستفاده را؛ به‌طوری‌که الگوی حذف‌شده پس از پاک‌سازی چیدمان‌ها نیز می‌تواند حذف شود. برای ذخیرهٔ ارائهٔ بهینه‌شده در فایلی جدید اقدام کنید اگر ممکن است در آینده به الگوها، چیدمان‌ها یا داده‌های کامل فونت‌های تعبیه‌شدهٔ اصلی نیاز داشته باشید. برای جزئیات بیشتر، به بخش‌های اسلاید الگو و فونت تعبیه‌شده مراجعه کنید.

سؤالات متداول

چه زمانی باید به‌جای مدل شیء کامل از API کد‑کم استفاده کنم؟

وقتی یک عملیات استاندارد بر روی یک فایل یا ارائه کامل اعمال می‌شود و نیازی به کنترل دقیق بر عناصر فردی نیست، از کمک‌کننده‌های کد‑کم استفاده کنید. وقتی باید اسلایدهای خاصی را انتخاب کنید، روابط الگو و چیدمان را کنترل کنید، وضعیت میانی را بازرسی کنید یا رفتارهایی را پیکربندی کنید که توسط کمک‌کننده در دسترس نیست، از مدل شیء کامل بهره ببرید.

آیا Merger می‌تواند ارائه‌ها را با قالب‌های فایل متفاوت ترکیب کند؟

خیر. Merger::Process نیاز دارد که ارائه‌های ورودی همگی در یک قالب باشند. ابتدا فایل‌های ورودی را با استفاده از Convert::AutoByExtension به قالب مشترک تبدیل کنید و سپس فایل‌های تبدیل‌شده را ترکیب کنید.

آیا ForEach اسلایدهای الگو، چیدمان و یادداشت‌ها را پردازش می‌کند؟

ForEach::Slide بر اسلایدهای عادی ارائه پیمایش می‌کند. عملیات سراسری ForEach::Shape، ForEach::Paragraph و ForEach::Portion به‌طور پیش‌فرض اسلایدهای عادی، الگو و چیدمان را شامل می‌شوند. برای شامل کردن اسلایدهای یادداشت‌ها، overloadهای آن‌ها را با مقدار includeNotes برابر true فراخوانی کنید.

تفاوت بین ForEach::Shape و Collect::Shapes چیست؟

وقتی می‌خواهید هر شکل را بلافاصله از طریق یک بازخورد پردازش کنید، از ForEach::Shape استفاده کنید. وقتی نیاز به نتیجه‌ای قابل پیمایش دارید که بتوان آن را نگه داشت، فیلتر کرد یا چندبار شمارش کرد، از Collect::Shapes بهره ببرید.

آیا Compress همیشه اندازهٔ فایل ارائه را کوچک می‌کند؟

لزومی ندارد. نتیجه بستگی دارد به اینکه آیا ارائه شامل چیدمان‌های بلااستفاده، الگوهای بلااستفاده یا فونت‌های تعبیه‌شده با کاراکترهای بلااستفاده باشد یا نه. اگر هیچ‌یک از این موارد موجود نباشد، عملیات‌های مربوط به Compress ممکن است اندازهٔ فایل را کاهش ندهند.

آیا تغییرات اعمال‌شده توسط ForEach یا Compress به‌صورت خودکار ذخیره می‌شوند؟

خیر. این کمک‌کننده‌ها بر روی شیء Presentation بارگذاری‌شده در حافظه عمل می‌کنند. پس از تغییر عناصر در بازخورد ForEach یا اجرای Compress، برای نوشتن نتیجه باید Presentation::Save را فراخوانی کنید.

مقالات مرتبط