Aspose.Slides untuk Xamarin

Pengantar

Xamarin adalah kerangka kerja yang digunakan untuk pengembangan seluler di .NET C#. Xamarin memiliki alat dan pustaka yang memperluas kemampuan platform .NET. Ini memungkinkan pengembang membangun aplikasi untuk sistem operasi Android.

Aspose.Slides API berfungsi pada platform Xamarin. Untuk mencapainya, paket Aspose.Slides .NET menambahkan DLL terpisah untuk Xamarin. Aspose.Slides untuk Xamarin mendukung sebagian besar fitur yang tersedia di versi .NET:

  • mengkonversi dan menampilkan presentasi.
  • mengedit konten dalam presentasi: teks, bentuk, diagram, SmartArt, audio/video, font, dll.
  • menangani animasi, efek 2D, WordArt, dll.
  • menangani metadata dan properti dokumen.
  • mencetak, mengkloning, menggabungkan, membandingkan, memecah, dll.

Kami menyediakan perbandingan seluruh fitur di bagian lain yang berada di dekat bagian bawah halaman ini.

Pada API Aspose.Slides untuk Xamarin, kelas, namespace, logika, dan perilaku sedekat mungkin dengan versi .NET. Anda dapat memigrasikan aplikasi Aspose.Slides .NET Anda ke Xamarin dengan biaya minimal.

Contoh Cepat

Anda dapat menggunakan Aspose.Slides untuk Xamarin untuk membangun dan memanfaatkan aplikasi C# Anda melalui Slides for Android.

Kami menyediakan contoh aplikasi Android via Xamarin yang menggunakan Aspose.Slides untuk menampilkan slide presentasi dan menambahkan bentuk baru pada slide saat disentuh. Anda dapat menemukan sumber lengkap contoh pada GitHub.

Mari kita mulai dengan membuat Aplikasi Xamarin Android:

todo:image_alt_text

Pertama, kita membuat tata letak konten yang akan berisi tampilan gambar, tombol Prev, dan Next:

todo:image_alt_text

XML - content_main.xml - Membuat tata letak konten

 <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>

Di sini, kami merujuk ke perpustakaan “Aspose.Slides.Droid.dll” yang termasuk contoh presentasi (“HelloWorld.pptx”) ke Assets aplikasi Xamarin dan menambahkan inisialisasinya ke MainActivity:

C# - MainActivity.cs - Inisialisasi

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

Mari tambahkan fungsi untuk menampilkan slide Prev dan Next saat tombol diketuk:

C# - MainActivity.cs - Menampilkan slide pada klik tombol Prev dan Next

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

}

Akhirnya, mari implementasikan fungsi untuk menambahkan bentuk elips pada sentuhan di slide:

C# - MainActivity.cs - Menambahkan elips dengan klik slide

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

Setiap klik pada slide presentasi akan menambahkan elips berwarna acak:

todo:image_alt_text

Fitur yang Didukung

FITUR Aspose.Slides for .NET Aspose.Slides for Xamarin
Fitur presentasi:
Buat presentasi baru tick tick
PowerPoint 97 - 2003 format buka/simpan tick tick
PowerPoint 2007 format buka/simpan tick tick
Dukungan ekstensi PowerPoint 2010 tick tick
Dukungan ekstensi PowerPoint 2013 tick tick
Dukungan fitur PowerPoint 2016 terbatas terbatas
Dukungan fitur PowerPoint 2019 terbatas terbatas
Konversi PPT ke PPTX tick tick
Konversi PPTX ke PPT tick tick
PPTX dalam PPT terbatas terbatas
Pemrosesan tema tick tick
Pemrosesan makro tick tick
Pemrosesan properti dokumen tick tick
Perlindungan kata sandi tick tick
Ekstraksi teks cepat tick tick
Menyematkan font tick tick
Render komentar tick tick
Menginterupsi tugas yang berjalan lama tick tick
Format ekspor:
PDF tick tick
XPS tick tick
HTML tick tick
TIFF tick circle
ODP terbatas terbatas
SWF terbatas terbatas
SVG tick tick
Format impor:
HTML terbatas terbatas
ODP tick tick
THMX tick tick
Fitur master slide:
Mengakses semua master slide yang ada tick tick
Membuat/menghapus master slide tick tick
Mengkloning master slide tick tick
Fitur layout slide:
Mengakses semua layout slide yang ada tick tick
Membuat/menghapus layout slide tick tick
Mengkloning layout slide tick tick
Fitur slide:
Mengakses semua slide yang ada tick tick
Membuat/menghapus slide tick tick
Mengkloning slide tick tick
Mengekspor slide ke gambar tick tick
Membuat/mengedit/menghapus bagian slide tick tick
Fitur slide catatan:
Mengakses semua slide catatan yang ada tick tick
Fitur bentuk:
Mengakses semua bentuk slide tick tick
Menambahkan bentuk baru tick tick
Mengkloning bentuk tick tick
Mengekspor bentuk terpisah ke gambar tick tick
Jenis bentuk yang didukung:
Semua jenis bentuk pra‑definisi tick tick
Bingkai gambar tick tick
Tabel tick tick
Diagram tick tick
SmartArt tick tick
Diagram lama tick tick
WordArt tick tick
Objek OLE, ActiveX terbatas terbatas
Bingkai video tick tick
Bingkai audio tick tick
Penghubung tick tick
Fitur grup bentuk:
Mengakses grup bentuk tick tick
Membuat grup bentuk tick tick
Melepas grup bentuk yang ada tick tick
Fitur efek bentuk:
Efek 2D terbatas terbatas
Efek 3D circle circle
Fitur teks:
Pemformatan paragraf tick tick
Pemformatan bagian tick tick
Fitur animasi:
Ekspor animasi ke SWF circle circle
Ekspor animasi ke HTML circle circle