Aspose.Slides pour Xamarin

Vue d’ensemble

Xamarin est un cadre utilisé pour le développement mobile en .NET C#. Xamarin possède des outils et des bibliothèques qui étendent les capacités de la plateforme .NET. Il permet aux développeurs de créer des applications pour le système d’exploitation Android.

L’API Aspose.Slides fonctionne sur la plateforme Xamarin. Pour cela, le package Aspose.Slides .NET ajoute une DLL séparée pour Xamarin. Aspose.Slides pour Xamarin prend en charge la plupart des fonctionnalités disponibles dans la version .NET :

  • conversion et visualisation des présentations.
  • édition du contenu des présentations : texte, formes, graphiques, SmartArt, audio/vidéo, polices, etc.
  • gestion des animations, effets 2D, WordArt, etc.
  • gestion des métadonnées et des propriétés du document.
  • impression, clonage, fusion, comparaison, fractionnement, etc.

Nous avons fourni une comparaison des fonctionnalités complètes dans une autre section près du bas de cette page.

Dans l’API Aspose.Slides pour Xamarin, les classes, espaces de noms, logique et comportement sont aussi similaires que possible à la version .NET. Vous pouvez migrer vos applications Aspose.Slides .NET vers Xamarin avec des coûts minimaux.

Exemple rapide

Vous pouvez utiliser Aspose.Slides pour Xamarin afin de créer et d’utiliser votre application C# via Slides for Android.

Nous fournissons un exemple d’application Android via Xamarin qui utilise Aspose.Slides pour afficher les diapositives de présentation et ajoute une nouvelle forme sur la diapositive au toucher. Vous pouvez trouver le code complet des exemples surGitHub.

Commençons par créer une application Xamarin Android :

todo:image_alt_text

Tout d’abord, nous créons une mise en page de contenu qui contiendra une vue image, les boutons Précédent et Suivant :

todo:image_alt_text

XML - content_main.xml - Créer la mise en page de contenu

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

Ici, nous référencions la bibliothèque “Aspose.Slides.Droid.dll” qui comprend une présentation d’exemple (“HelloWorld.pptx”) dans les Assets de l’application Xamarin et ajoutons son initialisation à MainActivity :

C# - MainActivity.cs - Initialisation

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

Ajoutons la fonction pour afficher les diapositives Précédent et Suivant lors du tapotement des boutons :

C# - MainActivity.cs - Affichage des diapositives lors du clic sur les boutons Précédent et Suivant

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

}

Enfin, implémentons une fonction permettant d’ajouter une forme d’ellipse au toucher sur la diapositive :

C# - MainActivity.cs - Ajouter une ellipse au clic sur la diapositive

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

Chaque clic sur la diapositive de la présentation ajoute une ellipse de couleur aléatoire :

todo:image_alt_text

Fonctionnalités prises en charge

|FONCTIONNALITÉS DE PRÉSENTATION:| | | |Créer de nouvelles présentations| tick | tick | |Ouverture/enregistrement des formats PowerPoint 97 - 2003| tick | tick | |Ouverture/enregistrement des formats PowerPoint 2007| tick | tick | |Prise en charge des extensions PowerPoint 2010| tick | tick | |Prise en charge des extensions PowerPoint 2013| tick | tick | |Prise en charge des fonctionnalités PowerPoint 2016|restricted|restricted| |Prise en charge des fonctionnalités PowerPoint 2019|restricted |restricted| |Conversion PPT vers PPTX| tick | tick | |Conversion PPTX vers PPT| tick | tick | |PPTX dans PPT|restricted|restricted| |Traitement des thèmes| tick | tick | |Traitement des macros| tick | tick | |Traitement des propriétés du document| tick | tick | |Protection par mot de passe| tick | tick | |Extraction rapide du texte| tick | tick | |Incorporation des polices| tick | tick | |Rendu des commentaires| tick | tick | |Interruption des tâches longues| tick | tick | |Formats d’exportation: | | | |PDF| tick | tick | |XPS| tick | tick | |HTML| tick | tick | |TIFF| tick | circle | |ODP|restricted |restricted| |SWF|restricted|restricted| |SVG| tick | tick | |Formats d’importation: | | | |HTML|restricted|restricted| |ODP| tick | tick | |THMX| tick | tick | |Fonctionnalités des diapositives maîtres: | | | |Accès à toutes les diapositives maîtres existantes| tick | tick | |Création/suppression de diapositives maîtres| tick | tick | |Clonage de diapositives maîtres| tick | tick | |Fonctionnalités des diapositives de mise en page: | | | |Accès à toutes les diapositives de mise en page existantes| tick | tick | |Création/suppression de diapositives de mise en page| tick | tick | |Clonage de diapositives de mise en page| tick | tick | |Fonctionnalités des diapositives: | | | |Accès à toutes les diapositives existantes| tick | tick | |Création/suppression de diapositives| tick | tick | |Clonage de diapositives| tick | tick | |Exportation des diapositives en images| tick | tick | |Création/édition/suppression de sections de diapositives| tick | tick | |Fonctionnalités des diapositives de notes: | | | |Accès à toutes les diapositives de notes existantes| tick | tick | |Fonctionnalités des formes: | | | |Accès à toutes les formes de diapositive| tick | tick | |Ajout de nouvelles formes| tick | tick | |Clonage de formes| tick | tick | |Exportation de formes individuelles en images| tick | tick | |Types de formes supportés: | | | |Tous les types de formes prédéfinies| tick | tick | |Cadres d’image| tick | tick | |Tableaux| tick | tick | |Graphiques| tick | tick | |SmartArt| tick | tick | |Diagrammes hérités| tick | tick | |WordArt| tick | tick | |OLE, objets ActiveX|restricted|restricted| |Cadres vidéo| tick | tick | |Cadres audio| tick | tick | |Connecteurs| tick | tick | |Fonctionnalités des formes groupées: | | | |Accès aux formes groupées| tick | tick | |Création de formes groupées| tick | tick | |Dégrouper les formes groupées existantes| tick | tick | |Fonctionnalités des effets de forme: | | | |Effets 2D|restricted|restricted| |Effets 3D| circle | circle | |Fonctionnalités texte: | | | |Mise en forme des paragraphes| tick | tick | |Mise en forme des portions| tick | tick | |Fonctionnalités d’animation: | | | |Exportation d’animation vers SWF| circle | circle | |Exportation d’animation vers HTML| circle | circle |