مقدمه

Aspose.Slides FOSS برای C++ (aspose_slides_foss) یک کتابخانه رایگان و متن‌باز C++20 برای ایجاد و دستکاری برنامه‌نویسی ارائه‌های PowerPoint است. این کتابخانه به‌طور کامل با C++ بومی ساخته شده و هیچ وابستگی زمان اجرا خارجی جز CMake 3.20+ ندارد و به توسعه‌دهندگان امکان کنترل کامل بر فایل‌های PPTX را بدون نیاز به Microsoft Office یا هر نرم‌افزار مالکی می‌دهد.

این کتابخانه تحت مجوز MIT منتشر شده است، به‌طوری که برای پروژه‌های تجاری و غیرتجاری مناسب است. API عمومی در فضای نام Aspose::Slides::Foss قرار دارد و یک مدل شیء‌گرا غنی را که شامل ارائه‌ها، اسلایدها، اشکال، جدول‌ها، فریم‌های متنی، ویژگی‌های سند، نظرات و خروجی PPTX است، فراهم می‌کند.

این پست به بررسی سطح هسته API می‌پردازد: کلاس‌ها و متدهایی که بیشترین استفاده را هنگام ساخت، قالب‌بندی و ذخیره‌سازی ارائه‌ها خواهید داشت.


موارد موجود

مدیریت ارائه و اسلاید

کلاس Presentation نقطه ورود است. ایجاد یک نمونه جدید یک اسلاید پیش‌فرض به شما می‌دهد که بلافاصله آماده محتوا است. شما اسلایدها را از طریق SlideCollection که توسط slides() برگردانده می‌شود، دسترسی می‌کنید، که از دسترسی ایندکسی، تکرار، حذف و بازآرایی پشتیبانی می‌کند.

#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;

Presentation pres;
auto& slide = pres.slides()[0]; // first slide
// Work with the slide...
pres.save("output.pptx", SaveFormat::PPTX);

شکل‌ها و AutoShapes

هر اسلاید یک ShapeCollection را از طریق دسترسی‌گر shapes() خود نمایش می‌دهد. این مجموعه روش‌های کارخانه‌ای برای افزودن انواع مختلف شکل‌ها فراهم می‌کند: add_auto_shape برای شکل‌های هندسی استاندارد (مستطیل‌ها، بیضی‌ها، مثلث‌ها)، add_connector برای اتصال‌دهنده‌های خطی، add_table برای جدول‌ها، و add_picture_frame برای تصاویر.

auto& slide = pres.slides()[0];

// Add a rectangle
auto& rect = slide.shapes().add_auto_shape(
    ShapeType::RECTANGLE, 50, 50, 300, 100);

// Add an ellipse
auto& ellipse = slide.shapes().add_auto_shape(
    ShapeType::ELLIPSE, 400, 50, 150, 150);

// Add a connector between shapes
auto& conn = slide.shapes().add_connector(
    ShapeType::BENT_CONNECTOR3, 0, 0, 1, 1);

کلاس ShapeCollection همچنین از size()، remove()، remove_at()، reorder()، index_of() و clear() برای مدیریت شکل‌ها پس از ایجاد پشتیبانی می‌کند.

قالب‌بندی متن و پاراگراف

شکل‌ها می‌توانند متن را از طریق TextFrame نگه دارند. از add_text_frame() روی یک AutoShape برای پیوست محتویات متن استفاده کنید، یا از طریق text_frame() به فریم موجود دسترسی پیدا کنید. متن به پاراگراف‌ها سازماندهی می‌شود که هر کدام شامل یک یا چند بخش هستند. کلاس BasePortionFormat ویژگی‌های استایل فونت را شامل بولد، ایتالیک، نوع زیرخط، حروف بزرگ، خط‌خورده و رنگ فونت نشان می‌دهد.

auto& shape = pres.slides()[0].shapes().add_auto_shape(
    ShapeType::RECTANGLE, 50, 50, 300, 100, false);
shape.add_text_frame("Hello, world!");
auto text = shape.text_frame()->text(); // "Hello, world!"

پر کردن، گرادیان و جلوه‌های بصری

هر شکل یک FillFormat فراهم می‌کند که از طریق fill_format() قابل دسترسی است. می‌توانید پر کردن‌های ثابت، پر کردن‌های گرادیان یا پر کردن‌های الگو را از طریق متد set_fill_type() تنظیم کنید. پر کردن‌های گرادیان از طریق شیء GradientFormat پیکربندی می‌شوند که از زوایای خطی، شکل گرادیان و توقف‌های رنگی از طریق GradientStopCollection پشتیبانی می‌کند.

auto& shape = slide.shapes().add_auto_shape(
    ShapeType::RECTANGLE, 50, 50, 300, 150);
shape.fill_format().set_fill_type(FillType::GRADIENT);
auto& gf = shape.fill_format().gradient_format();
gf.set_gradient_shape(GradientShape::LINEAR);
gf.set_linear_gradient_angle(45);
gf.gradient_stops().add(0.0f, Color::blue);
gf.gradient_stops().add(1.0f, Color::red);

کلاس EffectFormat (دسترسی از طریق effect_format()) افکت‌های تابش، سایه خارجی و لبه نرم را اضافه می‌کند. هر افکت با یک متد اختصاصی فعال می‌شود (enable_glow_effect()، enable_outer_shadow_effect()، enable_soft_edge_effect()) و از طریق شیء بازگشتی آن پیکربندی می‌شود.

جداول

جداول با add_table() در مجموعه اشکال ایجاد می‌شوند. شما عرض ستون‌ها و ارتفاع ردیف‌ها را به صورت بردارها ارائه می‌دهید. شیء بازگشتی Table مجموعه‌های rows() و columns() را در دسترس می‌گذارد و اشیای Cell فردی از طریق TextFrame از محتوای متنی پشتیبانی می‌کنند.

std::vector<double> col_widths = {100, 150, 200};
std::vector<double> row_heights = {40, 40, 40};
auto& table = slide.shapes().add_table(
    50, 50, col_widths, row_heights);
// table.rows().size() == 3
// table.columns().size() == 3

ویژگی‌های سند و نظرات

کلاس DocumentProperties به شما امکان تنظیم فراداده‌هایی مانند عنوان، نویسنده، موضوع، کلمات کلیدی، دسته‌بندی، شماره بازنگری و زمان‌سنج‌ها را می‌دهد. از طریق شیء ارائه به آن دسترسی پیدا کنید.

نظرات از طریق CommentAuthorCollection و CommentCollection مدیریت می‌شوند. شما نویسندگان را با add_author() اضافه می‌کنید، سپس نظرات را به اسلایدهای خاص در مختصات مشخصی پیوست می‌کنید.

Presentation pres;
auto& author = pres.comment_authors().add_author("Alice", "A");
auto& slide = pres.slides()[0];
auto& comment = author.comments().add_comment(
    "Review note", slide, PointF(2.0f, 3.0f), now);

شروع سریع

ساخت از منبع

این کتابخانه به CMake3.20+ و یک کامپایلر سازگار با C++20 نیاز دارد. مخزن را کلون کنید و بسازید:

git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

مثال ساده

#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];

    // Add a shape with text
    auto& shape = slide.shapes().add_auto_shape(
        ShapeType::RECTANGLE, 50, 50, 300, 100, false);
    shape.add_text_frame("Hello from Aspose.Slides FOSS!");

    // Apply a solid fill
    shape.fill_format().set_fill_type(FillType::SOLID);
    shape.fill_format().solid_fill_color().set_color(Color::blue);

    // Save
    pres.save("hello.pptx", SaveFormat::PPTX);
    return 0;
}

قالب‌های پشتیبانی‌شده

enum SaveFormat تمام هدف‌های خروجی را تعریف می‌کند. قالب‌های زیر در کد منبع تأیید شده‌اند:

قالبپسوندخواندننوشتن
PPTX.pptx–بله
PPT.ppt–Planned
PPSX.ppsx–Planned
PPTM.pptm–Planned
PPSM.ppsm–Planned
POTX.potx–Planned
POTM.potm–Planned
POT.pot–Planned
PPS.pps–Planned
ODP.odp–Planned
OTP.otp–Planned
FODP.fodp–Planned
PDF.pdf–Planned
XPS.xps–Planned
HTML.html–Planned
HTML5.html–Planned
TIFF.tiff–Planned
GIF.gif–Planned
SWF.swf–Planned
MD.md–Planned
XML.xml–Planned

توجه: در حال حاضر فقط خروجی PPTX پیاده‌سازی شده است. مقادیر دیگر فرمت‌ها در SaveFormat enum برای سازگاری آینده اما هنوز فعال نیستند. این save() متد همواره خروجی PPTX تولید می‌کند بدون در نظر گرفتن پارامتر فرمت.


منبع باز و مجوزدهی

Aspose.Slides FOSS برای C++ تحت مجوز MIT منتشر شده است. می‌توانید آن را به‌صورت آزاد در پروژه‌های شخصی، برنامه‌های تجاری و کتابخانه‌های توزیع‌شده استفاده کنید. هیچ کلید API، واترمارکی یا محدودیت استفاده‌ای وجود ندارد. کد منبع کامل در GitHub در آدرس https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp در دسترس است.


شروع کار

آماده‌اید Aspose.Slides FOSS را در پروژه C++ خود ادغام کنید؟ در اینجا منابع کلیدی آورده شده‌اند:

منابع مرتبط