Aspose.Slides لـ Xamarin

نظرة عامة

Xamarin هو إطار عمل يستخدم لتطوير التطبيقات المحمولة في .NET C#. يحتوي Xamarin على أدوات ومكتبات توسع من قدرات منصة .NET. يسمح للمطورين ببناء تطبيقات لنظام التشغيل Android.

تعمل واجهة برمجة التطبيقات Aspose.Slides على منصة Xamarin. لتحقيق ذلك، تضيف حزمة Aspose.Slides .NET ملف DLL منفصل لـ Xamarin. يدعم Aspose.Slides لـ Xamarin معظم الميزات المتاحة في النسخة .NET:

  • تحويل وعرض العروض التقديمية.
  • تحرير المحتوى في العروض التقديمية: نص، أشكال، مخططات، SmartArt، صوت/فيديو، خطوط، إلخ.
  • التعامل مع الرسوم المتحركة، وتأثيرات 2D، وWordArt، إلخ.
  • التعامل مع البيانات الوصفية وخصائص الوثائق.
  • الطباعة، الاستنساخ، الدمج، المقارنة، التقسيم، إلخ.

قمنا بتوفير مقارنة لجميع الميزات في قسم آخر قريب من أسفل هذه الصفحة.

في واجهة برمجة التطبيقات Aspose.Slides لـ Xamarin، تكون الفئات، ومساحات الأسماء، والمنطق، والسلوك مشابهه قدر الإمكان للإصدار .NET. يمكنك ترحيل تطبيقات Aspose.Slides .NET الخاصة بك إلى Xamarin بتكاليف قليلة.

مثال سريع

يمكنك استخدام Aspose.Slides لـ Xamarin لبناء واستخدام تطبيق C# الخاص بك من خلال Slides لـ Android.

نقدم مثالًا على تطبيق Android عبر Xamarin يستخدم Aspose.Slides لعرض شرائح العروض التقديمية ويضيف شكلاً جديدًا على الشريحة عند اللمس. يمكنك العثور على الكود المصدري الكامل للأمثلة على GitHub.

لنبدأ بإنشاء تطبيق Xamarin Android:

todo:image_alt_text

بداية، نقوم بإنشاء تخطيط محتوى يحتوي على صورة عرض وأزرار سابقة وتالية:

todo:image_alt_text

XML - content_main.xml - إنشاء تخطيط محتوى

 <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation=    "vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:showIn="@layout/activity_main">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:id="@+id/linearLayout1">
        <ImageView
            android:src="@android:drawable/ic_menu_gallery"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imageView"
            android:scaleType="fitCenter" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="10"
        android:id="@+id/linearLayout2">
        <Button
            android:text="السابق"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/buttonPrev" />
        <Button
            android:text="التالي"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/buttonNext"/>
    </LinearLayout>
</LinearLayout>

هنا، نقوم بالإشارة إلى مكتبة “Aspose.Slides.Droid.dll” التي تتضمن عرض تقديمي عينة (“HelloWorld.pptx”) في أصول تطبيق Xamarin وتضيف تهيئتها إلى MainActivity:

C# - MainActivity.cs - التهيئة

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    private Aspose.Slides.Presentation presentation;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.activity_main);
    }

    protected override void OnResume()
    {
        if (presentation == null)
        {
            using (Stream input = Assets.Open("HelloWorld.pptx"))
            {
                presentation = new Aspose.Slides.Presentation(input);
            }
        }
    }

    protected override void OnPause()
    {
        if (presentation != null)
        {
            presentation.Dispose();
            presentation = null;
        }
    }
}

لنقم بإضافة الوظيفة لعرض الشرائح السابقة والتالية عند الضغط على الأزرار:

C# - MainActivity.cs - عرض الشرائح عند الضغط على زر السابق والتالي

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    private Button buttonNext;
    private Button buttonPrev;
    ImageView imageView;

    private Aspose.Slides.Presentation presentation;

    private int currentSlideNumber;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.activity_main);
    }

    protected override void OnResume()
    {
        base.OnResume();
        LoadPresentation();
        currentSlideNumber = 0;
        if (buttonNext == null)
        {
            buttonNext = FindViewById<Button>(Resource.Id.buttonNext);
        }

        if (buttonPrev == null)
        {
            buttonPrev = FindViewById<Button>(Resource.Id.buttonPrev);
        }

        if(imageView == null)
        {
            imageView= FindViewById<ImageView>(Resource.Id.imageView);
        }

        buttonNext.Click += ButtonNext_Click;
        buttonPrev.Click += ButtonPrev_Click;
        RefreshButtonsStatus();
        ShowSlide(currentSlideNumber);
    }

    private void ButtonNext_Click(object sender, System.EventArgs e)
    {
        if (currentSlideNumber > (presentation.Slides.Count - 1))
        {
            return;
        }

        ShowSlide(++currentSlideNumber);
        RefreshButtonsStatus();
    }

    private void ButtonPrev_Click(object sender, System.EventArgs e)
    {
        if (currentSlideNumber == 0)
        {
            return;
        }

        ShowSlide(--currentSlideNumber);
        RefreshButtonsStatus();
    }

    protected override void OnPause()
    {
        base.OnPause();
        if (buttonNext != null)
        {
            buttonNext.Dispose();
            buttonNext = null;
        }

        if (buttonPrev != null)
        {
            buttonPrev.Dispose();
            buttonPrev = null;
        }

        if(imageView != null)
        {
            imageView.Dispose();
            imageView = null;
        }

        DisposePresentation();
    }

    private void RefreshButtonsStatus()
    {
        buttonNext.Enabled = currentSlideNumber < (presentation.Slides.Count - 1);
        buttonPrev.Enabled = currentSlideNumber > 0;
    }

    private void ShowSlide(int slideNumber)
    {
        Aspose.Slides.Drawing.Xamarin.Size size = presentation.SlideSize.Size.ToSize();
        Aspose.Slides.Drawing.Xamarin.Bitmap bitmap = presentation.Slides[slideNumber].GetThumbnail(size);
        imageView.SetImageBitmap(bitmap.ToNativeBitmap());
    }

    private void LoadPresentation()
    {
        if(presentation != null)
        {
            return;
        }

        using (Stream input = Assets.Open("HelloWorld.pptx"))
        {
            presentation = new Aspose.Slides.Presentation(input);
        }
    }

    private void DisposePresentation()
    {
        if(presentation == null)
        {
            return;
        }
        
        presentation.Dispose();
        presentation = null;
    }

}

أخيرًا، دعنا ننفذ وظيفة لإضافة شكل بيضاوي عند الضغط على الشريحة:

C# - MainActivity.cs - إضافة شكل بيضاوي عند النقر على الشريحة

 private void ImageView_Touch(object sender, Android.Views.View.TouchEventArgs e)
{
    int[] location = new int[2];
    imageView.GetLocationOnScreen(location);
    int x = (int)e.Event.GetX();
    int y = (int)e.Event.GetY();
    int posX = x - location[0];
    int posY = y - location[0];
    
    Aspose.Slides.Drawing.Xamarin.Size presSize = presentation.SlideSize.Size.ToSize();

    float coeffX = (float)presSize.Width / imageView.Width;
    float coeffY = (float)presSize.Height / imageView.Height;
    int presPosX = (int)(posX * coeffX);
    int presPosY = (int)(posY * coeffY);
    int width = presSize.Width / 50;

    int height = width;
    Aspose.Slides.IAutoShape ellipse = presentation.Slides[currentSlideNumber].Shapes.AddAutoShape(Aspose.Slides.ShapeType.Ellipse, presPosX, presPosY, width, height);
    ellipse.FillFormat.FillType = Aspose.Slides.FillType.Solid;

    Random random = new Random();
    Aspose.Slides.Drawing.Xamarin.Color slidesColor = Aspose.Slides.Drawing.Xamarin.Color.FromArgb(random.Next(256), random.Next(256), random.Next(256));
    ellipse.FillFormat.SolidFillColor.Color = slidesColor;
    ShowSlide(currentSlideNumber);
}

كل نقرة على الشريحة التقديمية تؤدي إلى إضافة شكل بيضاوي بلون عشوائي:

todo:image_alt_text

الميزات المدعومة

الميزات  Aspose.Slides لـ .NET   Aspose.Slides لـ Xamarin
ميزات العروض التقديمية    
إنشاء عروض تقديمية جديدة  tick tick
فتح/حفظ تنسيقات PowerPoint 97 - 2003  tick tick
فتح/حفظ تنسيقات PowerPoint 2007 tick tick
دعم ملحقات PowerPoint 2010 tick tick
دعم ملحقات PowerPoint 2013 tick tick
دعم ميزات PowerPoint 2016 مقيد مقيد
دعم ميزات PowerPoint 2019 مقيد  مقيد
التحويل من PPT إلى PPTX tick tick
التحويل من PPTX إلى PPT tick tick
PPTX في PPT مقيد مقيد
معالجة القوالب tick tick
معالجة الماكرو tick tick
معالجة خصائص الوثيقة tick tick
الحماية بكلمة مرور tick tick
استخراج نص سريع tick tick
دمج الخطوط tick tick
عرض التعليقات tick   tick
إيقاف المهام الطويلة tick tick  
تنسيقات التصدير:     
PDF  tick tick
XPS  tick tick
HTML  tick tick
TIFF  tick circle
ODP  مقيد  مقيد 
SWF  مقيد مقيد 
SVG  tick tick
تنسيقات الاستيراد:     
HTML  مقيد مقيد
ODP  tick tick
THMX  tick tick
ميزات الشرائح الرئيسية:     
الوصول إلى جميع شرائح الرئيسية الموجودة  tick tick
إنشاء/إزالة الشرائح الرئيسية  tick tick
استنساخ الشرائح الرئيسية  tick tick
ميزات تخطيط الشرائح:     
الوصول إلى جميع تخطيطات الشرائح الموجودة  tick tick
إنشاء/إزالة تخطيطات الشرائح  tick tick
استنساخ تخطيطات الشرائح  tick tick
ميزات الشرائح:     
الوصول إلى جميع الشرائح الموجودة  tick tick
إنشاء/إزالة الشرائح  tick tick
استنساخ الشرائح  tick tick
تصدير الشرائح إلى الصور  tick tick
إنشاء/تحرير/إزالة أقسام الشرائح  tick tick
ميزات ملاحظات الشرائح:     
الوصول إلى جميع ملاحظات الشرائح الموجودة  tick tick
ميزات الشكل:     
الوصول إلى جميع أشكال الشرائح  tick tick
إضافة أشكال جديدة  tick tick
استنساخ الأشكال  tick tick
تصدير الأشكال المنفصلة إلى صور  tick tick
أشكال المدعومة:     
جميع أنواع الأشكال المعرفة مسبقًا  tick tick
إطارات الصور  tick tick
الجداول  tick tick
المخططات  tick tick
SmartArt  tick tick
الرسوم البيانية القديمة  tick tick
WordArt  tick tick
OLE، كائنات ActiveX  مقيد مقيد
إطارات الفيديو  tick tick
إطارات الصوت  tick tick
الموصلات  tick tick
ميزات مجموعة الأشكال:     
الوصول إلى مجموعة الأشكال  tick tick
إنشاء مجموعة من الأشكال  tick tick
فك تجميع مجموعات الأشكال الموجودة  tick tick
ميزات تأثيرات الأشكال:     
تأثيرات 2D  مقيد مقيد
تأثيرات 3D  circle circle
ميزات النص:     
تنسيق الفقرات  tick tick
تنسيق الأجزاء  tick tick
ميزات الرسوم المتحركة:     
تصدير الرسوم المتحركة إلى SWF  circle circle
تصدير الرسوم المتحركة إلى HTML  circle circle