كيفية إنشاء العروض التقديمية في .NET
Aspose.Slides FOSS for .NET يتيح لك إنشاء عروض PowerPoint بالكامل باستخدام C# دون الاعتماد على Microsoft Office. يوضح هذا الدليل كيفية إنشاء عرض تقديمي جديد، وإضافة الشرائح والأشكال، وتنسيق النص، وحفظ النتيجة.
دليل خطوة بخطوة
الخطوة 1: تثبيت الحزمة
قم بتثبيت Aspose.Slides FOSS من NuGet. يتطلب .NET 9.0 أو أحدث.
dotnet add package Aspose.Slides.Fossتحقق من التثبيت:
using Aspose.Slides.Foss;
using var prs = new Presentation();
Console.WriteLine("Aspose.Slides FOSS ready");لا توجد حزم نظام أخرى مطلوبة.
الخطوة 2: استيراد المساحات الاسمية المطلوبة
أضف مساحات الأسماء المطلوبة لإنشاء العروض التقديمية وحفظها.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;جميع ثوابت نوع الشكل موجودة في Aspose.Slides.Foss.ShapeType. جميع أنواع التنسيق (FillType، NullableBool) موجودة أيضًا في Aspose.Slides.Foss.
الخطوة 3: إنشاء عرض تقديمي
استخدم new Presentation() مع بيان using. يبدأ عرض تقديمي جديد بشريحة فارغة واحدة.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
Console.WriteLine($"Slides in new presentation: {prs.Slides.Count}");
// work with prs
prs.Save("output.pptx", SaveFormat.Pptx);مهم: يجب دائمًا استخدام Presentation مع بيان using. الفئة تنفذ IDisposable ولن يتم تحرير الموارد بشكل صحيح بدونها.
الخطوة 4: الوصول إلى شريحة
الشريحة الأولى في الفهرس 0. العرض التقديمي الفارغ يحتوي على شريحة واحدة بالضبط.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0]; // zero-based index
Console.WriteLine($"Slide at index 0: {slide}");
prs.Save("output.pptx", SaveFormat.Pptx);الخطوة 5: إضافة شكل
استخدم slide.Shapes.AddAutoShape() لإضافة AutoShape. المعلمات هي (shapeType, x, y, width, height) جميعها بالنقاط (نقطة واحدة = 1/72 بوصة؛ الشريحة القياسية هي 720 × 540 نقطة).
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
// Rectangle at (50, 50) with 400 wide and 120 tall
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 400, 120);
// Attach a text frame
shape.AddTextFrame("Hello from Aspose.Slides FOSS!");
prs.Save("with-shape.pptx", SaveFormat.Pptx);الخطوة 6: حفظ العرض التقديمي
استدعِ prs.Save(path, SaveFormat.Pptx) قبل التخلص من الكائن. PPTX هو تنسيق الإخراج الوحيد المدعوم.
prs.Save("result.pptx", SaveFormat.Pptx);يتم كتابة الملف بطريقة ذرية؛ إذا حدث خطأ قبل هذا الاستدعاء، لن يتم إنشاء ملف إخراج.
مثال عملي كامل
البرنامج التالي ينشئ عرض تقديمي من شريحتين مع شكل عنوان في الشريحة الأولى وجدول في الشريحة الثانية.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
// --- Slide 1: title shape ---
var slide1 = prs.Slides[0];
var title = slide1.Shapes.AddAutoShape(ShapeType.Rectangle, 40, 40, 640, 80);
var tf = title.AddTextFrame("Q1 Results: Executive Summary");
var fmt = tf.Paragraphs[0].Portions[0].PortionFormat;
fmt.FontHeight = 32;
fmt.FontBold = NullableBool.True;
fmt.FillFormat.FillType = FillType.Solid;
fmt.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 0, 70, 127);
// --- Slide 2: table ---
prs.Slides.AddEmptySlide(prs.LayoutSlides[0]);
var slide2 = prs.Slides[1];
var table = slide2.Shapes.AddTable(40, 40,
new double[] { 200.0, 120.0, 120.0 },
new double[] { 40.0, 40.0, 40.0 });
string[] headers = { "Region", "Revenue", "Growth" };
string[][] data = {
new[] { "North", "$1.2M", "+8%" },
new[] { "South", "$0.9M", "+4%" },
};
for (int col = 0; col < headers.Length; col++)
table.Rows[0][col].TextFrame.Text = headers[col];
for (int row = 0; row < data.Length; row++)
for (int col = 0; col < data[row].Length; col++)
table.Rows[row + 1][col].TextFrame.Text = data[row][col];
prs.Save("q1-results.pptx", SaveFormat.Pptx);
Console.WriteLine("Saved q1-results.pptx");المشكلات الشائعة والحلول
ObjectDisposedException
أنت تستخدم كائن Presentation بعد انتهاء كتلة using. يجب أن يتم كل العمل قبل التخلص من الكائن.
خطأ عدم وجود مساحة اسم لـ ShapeType
تأكد من وجود using Aspose.Slides.Foss; في أعلى ملفك. ShapeType، NullableBool، FillType، وغيرها من القيم التعدادية موجودة في هذا النطاق.
SaveFormat باستثناء Pptx
تمرير أي قيمة SaveFormat غير SaveFormat.Pptx لا يثير استثناءً. يتم تجاهل معامل التنسيق بصمت ويتم دائمًا إنتاج PPTX. استخدم دائمًا SaveFormat.Pptx لتكون صريحًا.
الأسئلة المتكررة
ما هو حجم الشريحة الافتراضي؟
إنشاء جديد Presentation() ينشئ شرائح بالحجم القياسي 10 × 7.5 بوصة (720 × 540 نقطة). تغيير حجم الشريحة غير مدعوم بعد في هذا الإصدار.
هل يمكنني إضافة أكثر من شريحة واحدة؟
نعم. استدعِ prs.Slides.AddEmptySlide(prs.LayoutSlides[0]) لإضافة شريحة فارغة والوصول إليها عبر الفهرس:
prs.Slides.AddEmptySlide(prs.LayoutSlides[0]);
var slide2 = prs.Slides[1];هل يمكنني فتح ملف موجود وإضافة شرائح؟
نعم:
using var prs = new Presentation("existing.pptx");
prs.Slides.AddEmptySlide(prs.LayoutSlides[0]);
prs.Save("existing.pptx", SaveFormat.Pptx);ما الصيغ التي يمكنني الحفظ إليها؟
يتم دعم SaveFormat.Pptx فقط. التصدير إلى PDF أو HTML أو SVG أو الصور غير متاح في هذا الإصدار.