Aspose.Slides Xamarin için

Giriş

Xamarin, .NET C# ile mobil geliştirme için kullanılan bir çerçevedir. Xamarin, .NET platformunun yeteneklerini genişleten araçlar ve kütüphaneler sunar. Geliştiricilerin Android işletim sistemi için uygulamalar oluşturmasına olanak tanır.

Aspose.Slides API, Xamarin platformunda çalışır. Bunu sağlamak için Aspose.Slides .NET paketi, Xamarin için ayrı bir DLL ekler. Aspose.Slides for Xamarin, .NET sürümünde mevcut olan özelliklerin çoğunu destekler:

  • sunumları dönüştürme ve görüntüleme.
  • sunum içeriğini düzenleme: metin, şekiller, grafikler, SmartArt, ses/video, yazı tipleri vb.
  • animasyon, 2D efektler, WordArt vb. ile çalışma.
  • meta veri ve belge özellikleriyle çalışma.
  • yazdırma, kopyalama, birleştirme, karşılaştırma, bölme vb.

Tam özellik karşılaştırmasını sayfanın alt kısmındaki başka bir bölümde bulabilirsiniz.

Aspose.Slides for Xamarin API’de sınıflar, ad alanları, mantık ve davranış mümkün olduğunca .NET sürümüne benzer. Aspose.Slides .NET uygulamalarınızı minimum maliyetle Xamarin’e taşıyabilirsiniz.

Hızlı Örnek

Aspose.Slides for Xamarin’i kullanarak C# uygulamanızı Slides for Android üzerinden oluşturabilir ve kullanabilirsiniz.

Android için Xamarin uygulamasının Aspose.Slides kullanarak sunum slaytlarını gösterdiği ve slayta dokunulduğunda yeni bir şekil eklediği bir örnek sağlıyoruz. Örneklerin tam kaynağını GitHub adresinde bulabilirsiniz.

Xamarin Android App oluşturarak başlayalım:

todo:image_alt_text

İlk olarak bir resim görünümü, Ön ve Sonraki düğmeleri içerecek bir içerik düzeni oluşturuyoruz:

todo:image_alt_text

XML - content_main.xml - İçerik düzenini oluşturma

 <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="Prev"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/buttonPrev" />
        <Button
            android:text="Next"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/buttonNext"/>
    </LinearLayout>
</LinearLayout>

Burada, örnek bir sunumu (“HelloWorld.pptx”) içeren “Aspose.Slides.Droid.dll” kütüphanesini Xamarin uygulama Assets’ine ekliyor ve başlatmasını MainActivity’e ekliyoruz:

C# - MainActivity.cs - Başlatma

[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;
        }
    }
}

Düğmelere dokunulduğunda Ön ve Sonraki slaytları gösteren işlevi ekleyelim:

C# - MainActivity.cs - Ön ve Sonraki düğme tıklamasında slaytları gösterme

[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;
    }

}

Son olarak, slayta dokunulduğunda bir elips şekli ekleyen işlevi uygulayalım:

C# - MainActivity.cs - Slayt tıklamasında elips ekleme

 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);
}

Sunum slaytına yapılan her tıklama, rastgele renkli bir elips ekler:

todo:image_alt_text

Desteklenen Özellikler

ÖZELLİKLER Aspose.Slides for .NET Aspose.Slides for Xamarin
Sunum özellikleri:
Yeni sunumlar oluşturma tick tick
PowerPoint 97 - 2003 formatlarını açma/kaydetme tick tick
PowerPoint 2007 formatlarını açma/kaydetme tick tick
PowerPoint 2010 uzantı desteği tick tick
PowerPoint 2013 uzantı desteği tick tick
PowerPoint 2016 özellik desteği restricted restricted
PowerPoint 2019 özellik desteği restricted restricted
PPT’den PPTX’e dönüştürme tick tick
PPTX’den PPT’ye dönüştürme tick tick
PPT içinde PPTX restricted restricted
Tema işleme tick tick
Makro işleme tick tick
Belge özellikleri işleme tick tick
Şifre koruması tick tick
Hızlı metin çıkarma tick tick
Yazı tipi gömme tick tick
Yorum renderleme tick tick
Uzun süren görevlerin kesilmesi tick tick
Dışa aktarım formatları:
PDF tick tick
XPS tick tick
HTML tick tick
TIFF tick circle
ODP restricted restricted
SWF restricted restricted
SVG tick tick
İçeri aktarma formatları:
HTML restricted restricted
ODP tick tick
THMX tick tick
Ana slayt özellikleri:
Mevcut tüm ana slaytlara erişim tick tick
Ana slaytları oluşturma/kaldırma tick tick
Ana slaytların kopyalanması tick tick
Düzen slaytı özellikleri:
Mevcut tüm düzen slaytlarına erişim tick tick
Düzen slaytlarını oluşturma/kaldırma tick tick
Düzen slaytlarının kopyalanması tick tick
Slayt özellikleri:
Mevcut tüm slaytlara erişim tick tick
Slaytları oluşturma/kaldırma tick tick
Slaytları kopyalama tick tick
Slaytları görüntülere dışa aktarma tick tick
Slayt bölümlerini oluşturma/düzenleme/kaldırma tick tick
Not slaytı özellikleri:
Mevcut tüm not slaytlarına erişim tick tick
Şekil özellikleri:
Tüm slayt şekillerine erişim tick tick
Yeni şekil ekleme tick tick
Şekilleri kopyalama tick tick
Ayrı şekilleri görüntülere dışa aktarma tick tick
Desteklenen şekil türleri:
Tüm ön tanımlı şekil türleri tick tick
Resim çerçeveleri tick tick
Tablolar tick tick
Grafikler tick tick
SmartArt tick tick
Eski diyagram tick tick
WordArt tick tick
OLE, ActiveX nesneleri restricted restricted
Video çerçeveleri tick tick
Ses çerçeveleri tick tick
Bağlayıcılar tick tick
Grup şekil özellikleri:
Grup şekillerine erişim tick tick
Grup şekilleri oluşturma tick tick
Mevcut grup şekillerinin gruplama çözümü tick tick
Şekil efektleri özellikleri:
2D efektler restricted restricted
3D efektler circle circle
Metin özellikleri:
Paragraf biçimlendirme tick tick
Bölüm biçimlendirme tick tick
Animasyon özellikleri:
Animasyonu SWF’ye dışa aktarma circle circle
Animasyonu HTML’ye dışa aktarma circle circle