مقدمه

Aspose.Slides FOSS for .NET مجموعه‌ای جامع از کلاس‌ها را برای مدیریت ارائه‌های PowerPoint به‌صورت کامل در C# فراهم می‌کند. این کتابخانه به شما امکان می‌دهد فایل‌های جدید .pptx را از ابتدا ایجاد کنید، فایل‌های موجود را بارگذاری کنید، اسلایدها و اشکال را دستکاری کنید و نتیجه را به‌صورت ذخیره‌سازی بر روی دیسک ذخیره کنید – همه اینها بدون نصب Microsoft Office یا هر وابستگی خارجی.

پکیج NuGet Aspose.Slides.Foss برای .NET 9.0 هدف‌گذاری شده است و به‌صورت یکسان بر روی Windows، macOS، Linux و کانتینرهای Docker اجرا می‌شود. این پکیج تحت مجوز MIT منتشر شده است، بنابراین می‌توانید آن را در پروژه‌های تجاری و منبع باز بدون هیچ محدودیتی استفاده کنید.

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


چه چیزهایی شامل می‌شود

ایجاد و بارگذاری ارائه‌ها

کلاس Presentation نقطه ورودی برای هر عملیات است. می‌توانید یک ارائه خالی ایجاد کنید، یکی را از مسیر فایل بارگذاری کنید یا از یک جریان بخوانید. این کلاس IDisposable را پیاده‌سازی می‌کند، بنابراین بسته‌بندی آن در یک عبارت using تضمین می‌کند که منابع به‌درستی آزاد شوند.

// Create a brand-new, empty presentation
using var pres = new Presentation();

// Load an existing file
using var existing = new Presentation("report.pptx");

شی Presentation سلسله‌مراتب کامل اسلایدها را از طریق ویژگی‌هایی مانند Slides، Masters، LayoutSlides، Sections، CommentAuthors، Images و NotesSize در دسترس می‌گذارد.

کار با اسلایدها

SlideCollection که توسط Presentation.Slides بازگردانده می‌شود، از افزودن، کلون کردن، درج، تغییر ترتیب و حذف اسلایدها پشتیبانی می‌کند. می‌توانید یک اسلاید را در همان ارائه یا بین ارائه‌ها کلون کنید در حالی که طرح‌بندی‌ها را حفظ یا بازنقشه‌گذاری کنید.

using var pres = new Presentation();

// The default presentation contains one blank slide
var firstSlide = pres.Slides[0];

// Clone the first slide and append it
pres.Slides.AddClone(firstSlide);

// Insert a clone at a specific position
pres.Slides.InsertClone(1, firstSlide);

// Remove a slide by index
pres.Slides.RemoveAt(2);

// Total slide count
int count = pres.Slides.Count;

هر Slide ، SlideNumber، Hidden، LayoutSlide، NotesSlideManager و Name را در دسترس قرار می‌دهد. می‌توانید مجموعه را با foreach پیمایش کنید یا آن را با ToArray() به آرایه تبدیل کنید.

شکل‌ها و اشکال خودکار

هر اسلاید شامل یک ShapeCollection است که از طریق Slide.Shapes قابل دسترسی است. این مجموعه روش‌های کارخانه‌ای برای رایج‌ترین انواع شکل‌ها را فراهم می‌کند.

using var pres = new Presentation();
var slide = pres.Slides[0];

// Add a rectangle AutoShape
var rect = slide.Shapes.AddAutoShape(
    ShapeType.Rectangle, 50, 50, 300, 150);

// Add a connector
var connector = slide.Shapes.AddConnector(
    ShapeType.BentConnector3, 100, 200, 200, 50);

// Reorder a shape to bring it forward
slide.Shapes.Reorder(0, rect);

// Remove all shapes
slide.Shapes.Clear();

متدهای AddAutoShape و InsertAutoShape یک مقدار enum ShapeType به‌علاوه مختصات موقعیت و اندازه را می‌پذیرند. AddConnector، InsertConnector، AddPictureFrame و InsertPictureFrame الگوی مشابهی را دنبال می‌کنند.

متن: پاراگراف‌ها و بخش‌ها

متن در یک ارائه داخل TextFrame قرار دارد که شامل ParagraphCollection است. هر Paragraph یک PortionCollection از اشیاء Portion را نگه می‌دارد که نمایانگر اجراهای متنی جداگانه با قالب‌بندی مستقل هستند.

using var pres = new Presentation();
var slide = pres.Slides[0];

var shape = slide.Shapes.AddAutoShape(
    ShapeType.Rectangle, 50, 50, 400, 200);

// Access the shape's text frame
var tf = shape.TextFrame;

// Read or set the full text
tf.Text = "Hello, presentation world!";

// Work with individual paragraphs and portions
var para = new Paragraph();
var portion = new Portion("Formatted run");
para.Portions.Add(portion);
tf.Paragraphs.Add(para);

هر Portion دارای یک ویژگی PortionFormat برای کنترل قلم، اندازه، بولد/ایتالیک، رنگ، زیرخط و سایر ویژگی‌های سطح کاراکتر است. ParagraphFormat تنظیمات تراز، سبک گلوله، فاصله‌گذاری و تورفتگی را کنترل می‌کند.

جداول

جداول از طریق ShapeCollection.AddTable اضافه می‌شوند، که عرض ستون‌ها و ارتفاع ردیف‌ها را به صورت آرایه می‌پذیرد. شیء Table بازگشتی دسترسی به Rows، Columns و اشیاء Cell فردی را فراهم می‌کند.

using var pres = new Presentation();
var slide = pres.Slides[0];

double[] colWidths = { 150, 150, 150 };
double[] rowHeights = { 40, 40, 40 };

var table = slide.Shapes.AddTable(
    50, 50, colWidths, rowHeights);

// Set text in a cell
table.Rows[0][0].TextFrame.Text = "Header 1";
table.Rows[0][1].TextFrame.Text = "Header 2";
table.Rows[0][2].TextFrame.Text = "Header 3";

// Merge cells
table.MergeCells(table.Rows[1][0], table.Rows[1][2], false);

// Style presets
table.StylePreset = TableStylePreset.MediumStyle2Accent1;

ذخیره‌سازی ارائه‌ها

متد Presentation.Save سند را به یک فایل یا جریان می‌نویسد. enum SaveFormat قالب خروجی را مشخص می‌کند. PPTX قالب خروجی اصلی پشتیبانی‌شده است.

using var pres = new Presentation();
// ... build slides ...

// Save to a file
pres.Save("output.pptx", SaveFormat.Pptx);

// Save to a stream
using var ms = new MemoryStream();
pres.Save(ms, SaveFormat.Pptx);

// Save specific slides by index
pres.Save("subset.pptx", new[] { 1, 3 }, SaveFormat.Pptx);

همچنین می‌توانید یک شیء SaveOptions را برای کنترل بیشتر بر خروجی پاس دهید.


شروع سریع

پکیج را از طریق .NET CLI نصب کنید:

dotnet add package aspose.slides.foss

سپس یک ارائهٔ حداقل ایجاد کنید و ذخیره کنید:

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

// 1. Create a new presentation
using var pres = new Presentation();

// 2. Get the default slide
var slide = pres.Slides[0];

// 3. Add a title shape
var title = slide.Shapes.AddAutoShape(
    ShapeType.Rectangle, 50, 30, 600, 60);
title.TextFrame.Text = "Quarterly Report";

// 4. Add a content shape
var body = slide.Shapes.AddAutoShape(
    ShapeType.Rectangle, 50, 120, 600, 300);
var para = new Paragraph();
para.Portions.Add(new Portion("Revenue grew 12% year-over-year."));
body.TextFrame.Paragraphs.Add(para);

// 5. Save as PPTX
pres.Save("quarterly-report.pptx", SaveFormat.Pptx);

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

قالبپسوندخواندننوشتن
PPTX.pptxبلهبله
PPSX.ppsxخیربله
PPTM.pptmخیربله
POTX.potxخیربله
ODP.odpخیربله
FODP.fodpخیربله

Note: کتابخانه به‌صورت بومی PPTX را می‌خواند و می‌نویسد. سایر فرمت‌های فهرست‌شده در enum SaveFormat در سطح API اعلام شده‌اند؛ دقت واقعی صادرات ممکن است متفاوت باشد. فرمت باینری قدیمی .ppt پشتیبانی نمی‌شود.


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

Aspose.Slides FOSS برای .NET تحت مجوز MIT منتشر شده است. کد منبع کامل در GitHub در دسترس است. می‌توانید از آن در پروژه‌های تجاری و منبع باز استفاده کنید، کد را تغییر دهید و بدون محدودیت توزیع کنید. نیازی به کلید API، فایل مجوز یا ثبت‌نام نیست.


شروع کار