Aspose.Slides per Xamarin

Introduzione

Xamarin è un framework utilizzato per lo sviluppo mobile in .NET C#. Xamarin dispone di strumenti e librerie che estendono le capacità della piattaforma .NET. Consente agli sviluppatori di creare applicazioni per il sistema operativo Android.

L’API Aspose.Slides funziona sulla piattaforma Xamarin. Per questo, il pacchetto Aspose.Slides .NET aggiunge un DLL separato per Xamarin. Aspose.Slides per Xamarin supporta la maggior parte delle funzionalità disponibili nella versione .NET:

  • conversione e visualizzazione di presentazioni.
  • modifica dei contenuti nelle presentazioni: testo, forme, grafici, SmartArt, audio/video, caratteri, ecc.
  • gestione/gestione delle animazioni, effetti 2D, WordArt, ecc.
  • gestione/gestione dei metadati e delle proprietà del documento.
  • stampa, clonazione, unione, confronto, divisione, ecc.

Abbiamo fornito un confronto delle funzionalità complete in un’altra sezione verso la fine di questa pagina.

Nell’API Aspose.Slides per Xamarin, le classi, gli spazi dei nomi, la logica e il comportamento sono il più simile possibile alla versione .NET. È possibile migrare le proprie applicazioni Aspose.Slides .NET su Xamarin con costi minimi.

Esempio rapido

È possibile utilizzare Aspose.Slides per Xamarin per creare e sfruttare la propria applicazione C# tramite Slides per Android.

Forniamo un esempio di applicazione Android tramite Xamarin che utilizza Aspose.Slides per visualizzare le diapositive di una presentazione e aggiunge una nuova forma alla diapositiva al tocco. È possibile trovare il codice sorgente completo degli esempi su GitHub.

Iniziamo creando un’app Xamarin Android:

todo:image_alt_text

Per prima cosa, creiamo un layout di contenuto che conterrà una vista immagine, i pulsanti Precedente e Successivo:

todo:image_alt_text

XML - content_main.xml - Creare layout di contenuto

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

Qui, facciamo riferimento alla libreria “Aspose.Slides.Droid.dll” che include una presentazione di esempio (“HelloWorld.pptx”) negli Assets dell’applicazione Xamarin e aggiungiamo la sua inizializzazione a MainActivity:

C# - MainActivity.cs - Inizializzazione

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

Aggiungiamo la funzione per visualizzare le diapositive Precedente e Successivo al tocco dei pulsanti:

C# - MainActivity.cs - Visualizzare diapositive al clic dei pulsanti Precedente e Successivo

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

}

Infine, implementiamo una funzione per aggiungere una forma ellittica al tocco sulla diapositiva:

C# - MainActivity.cs - Aggiungere ellisse al clic della diapositiva

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

Ogni clic sulla diapositiva della presentazione aggiunge un’ellisse di colore casuale:

todo:image_alt_text

Funzionalità supportate

CARATTERISTICHE Aspose.Slides per .NET Aspose.Slides per Xamarin
Caratteristiche della presentazione:
Creare nuove presentazioni tick tick
Apertura/Salvataggio formati PowerPoint 97 - 2003 tick tick
Apertura/Salvataggio formati PowerPoint 2007 tick tick
Supporto estensioni PowerPoint 2010 tick tick
Supporto estensioni PowerPoint 2013 tick tick
Supporto funzionalità PowerPoint 2016 restricted restricted
Supporto funzionalità PowerPoint 2019 restricted restricted
Conversione PPT a PPTX tick tick
Conversione PPTX a PPT tick tick
PPTX in PPT restricted restricted
Elaborazione temi tick tick
Elaborazione macro tick tick
Elaborazione proprietà documento tick tick
Protezione con password tick tick
Estrazione rapida del testo tick tick
Incorporamento caratteri tick tick
Rendering dei commenti tick tick
Interruzione di operazioni a lunga durata tick tick
Formati di esportazione:
PDF tick tick
XPS tick tick
HTML tick tick
TIFF tick circle
ODP restricted restricted
SWF restricted restricted
SVG tick tick
Formati di importazione:
HTML restricted restricted
ODP tick tick
THMX tick tick
Caratteristiche delle master slide:
Accesso a tutte le master slide esistenti tick tick
Creazione/rimozione master slide tick tick
Clonazione master slide tick tick
Caratteristiche delle layout slide:
Accesso a tutti i layout slide esistenti tick tick
Creazione/rimozione layout slide tick tick
Clonazione layout slide tick tick
Caratteristiche delle slide:
Accesso a tutte le slide esistenti tick tick
Creazione/rimozione slide tick tick
Clonazione slide tick tick
Esportazione slide in immagini tick tick
Creazione/modifica/rimozione sezioni slide tick tick
Caratteristiche delle note slide:
Accesso a tutte le note slide esistenti tick tick
Caratteristiche delle forme:
Accesso a tutte le forme delle slide tick tick
Aggiunta di nuove forme tick tick
Clonazione forme tick tick
Esportazione forme separate in immagini tick tick
Tipi di forma supportati:
Tutti i tipi di forma predefiniti tick tick
Cornici immagine tick tick
Tabelle tick tick
Grafici tick tick
SmartArt tick tick
Diagrammi legacy tick tick
WordArt tick tick
OLE, oggetti ActiveX restricted restricted
Cornici video tick tick
Cornici audio tick tick
Connettori tick tick
Caratteristiche delle forme di gruppo:
Accesso a forme di gruppo tick tick
Creazione di forme di gruppo tick tick
Separazione di forme di gruppo esistenti tick tick
Caratteristiche degli effetti delle forme:
Effetti 2D restricted restricted
Effetti 3D circle circle
Caratteristiche del testo:
Formattazione paragrafi tick tick
Formattazione porzioni tick tick
Caratteristiche di animazione:
Esportazione animazione in SWF circle circle
Esportazione animazione in HTML circle circle