Aspose.Slides pour Xamarin

Aperçu

Xamarin est un cadre utilisé pour le développement mobile en .NET C#. Xamarin dispose d’outils et de bibliothèques qui étendent les capacités de la plateforme .NET. Il permet aux développeurs de construire 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 de présentations.
  • édition des contenus 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, séparation, 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 minimes.

Exemple Rapide

Vous pouvez utiliser Aspose.Slides pour Xamarin pour construire et utiliser votre application C# via Slides pour Android.

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

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 image, des 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="Précédent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/buttonPrev" />
        <Button
            android:text="Suivant"
            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 actifs 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 clic sur les boutons :

C# - MainActivity.cs - Afficher les 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 pour ajouter une forme ellipse lors d’un toucher sur la diapositive :

C# - MainActivity.cs - Ajouter une ellipse par 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 entraîne l’ajout d’une ellipse de couleur aléatoire :

todo:image_alt_text

Fonctionnalités prises en charge

FONCTIONNALITÉS  Aspose.Slides pour .NET   Aspose.Slides pour Xamarin
Fonctionnalités de présentation    
Créer de nouvelles présentations  tick tick
Formats PowerPoint 97 - 2003 ouvrir/enregistrer  tick tick
Formats PowerPoint 2007 ouvrir/enregistrer  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  restreint restreint
Prise en charge des fonctionnalités PowerPoint 2019  restreint  restreint
Conversion PPT 2 PPTX  tick tick
Conversion PPTX 2 PPT  tick tick
PPTX dans PPT  restreint restreint
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 de texte  tick tick
Intégration des polices  tick tick
Rendu des commentaires  tick   tick
Interruption des tâches de longue durée  tick tick  
Formats d’exportation :     
PDF  tick tick
XPS  tick tick
HTML  tick tick
TIFF  tick circle
ODP  restreint  restreint
SWF  restreint restreint
SVG  tick tick
Formats d’importation :     
HTML  restreint restreint
ODP  tick tick
THMX  tick tick
Fonctionnalités des diapositives maîtresses :     
Accès à toutes les diapositives maîtresses existantes  tick tick
Création/suppression de diapositives maîtresses  tick tick
Clonage de diapositives maîtresses  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 vers des images  tick tick
Création/édition/suppression des 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 diapositives  tick tick
Ajout de nouvelles formes  tick tick
Clonage des formes  tick tick
Exportation de formes séparées vers des images  tick tick
Types de formes pris en charge :     
Tous les types de formes prédéfinis  tick tick
Cadres d’image  tick tick
Tableaux  tick tick
Graphiques  tick tick
SmartArt  tick tick
Diagramme hérité  tick tick
WordArt  tick tick
OLE, objets ActiveX  restreint restreint
Cadres vidéo  tick tick
Cadres audio  tick tick
Connecteurs  tick tick
Fonctionnalités des formes de groupe :     
Accès aux formes de groupe  tick tick
Création de formes de groupe  tick tick
Dissociation des formes de groupe existantes  tick tick
Fonctionnalités des effets de forme :     
Effets 2D  restreint restreint
Effets 3D  circle circle
Fonctionnalités de texte :     
Mise en forme des paragraphes  tick tick
Mise en forme des portions  tick tick
Fonctionnalités d’animation :     
Exporter l’animation vers SWF  circle circle
Exporter l’animation vers HTML  circle circle