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 :
Tout d’abord, nous créons une mise en page de contenu qui contiendra une image, des boutons Précédent et Suivant :
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 :
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 | ||
Formats PowerPoint 97 - 2003 ouvrir/enregistrer | ||
Formats PowerPoint 2007 ouvrir/enregistrer | ||
Prise en charge des extensions PowerPoint 2010 | ||
Prise en charge des extensions PowerPoint 2013 | ||
Prise en charge des fonctionnalités PowerPoint 2016 | restreint | restreint |
Prise en charge des fonctionnalités PowerPoint 2019 | restreint | restreint |
Conversion PPT 2 PPTX | ||
Conversion PPTX 2 PPT | ||
PPTX dans PPT | restreint | restreint |
Traitement des thèmes | ||
Traitement des macros | ||
Traitement des propriétés du document | ||
Protection par mot de passe | ||
Extraction rapide de texte | ||
Intégration des polices | ||
Rendu des commentaires | ||
Interruption des tâches de longue durée | ||
Formats d’exportation : | ||
XPS | ||
HTML | ||
TIFF | ||
ODP | restreint | restreint |
SWF | restreint | restreint |
SVG | ||
Formats d’importation : | ||
HTML | restreint | restreint |
ODP | ||
THMX | ||
Fonctionnalités des diapositives maîtresses : | ||
Accès à toutes les diapositives maîtresses existantes | ||
Création/suppression de diapositives maîtresses | ||
Clonage de diapositives maîtresses | ||
Fonctionnalités des diapositives de mise en page : | ||
Accès à toutes les diapositives de mise en page existantes | ||
Création/suppression de diapositives de mise en page | ||
Clonage de diapositives de mise en page | ||
Fonctionnalités des diapositives : | ||
Accès à toutes les diapositives existantes | ||
Création/suppression de diapositives | ||
Clonage de diapositives | ||
Exportation des diapositives vers des images | ||
Création/édition/suppression des sections de diapositives | ||
Fonctionnalités des diapositives de notes : | ||
Accès à toutes les diapositives de notes existantes | ||
Fonctionnalités des formes : | ||
Accès à toutes les formes de diapositives | ||
Ajout de nouvelles formes | ||
Clonage des formes | ||
Exportation de formes séparées vers des images | ||
Types de formes pris en charge : | ||
Tous les types de formes prédéfinis | ||
Cadres d’image | ||
Tableaux | ||
Graphiques | ||
SmartArt | ||
Diagramme hérité | ||
WordArt | ||
OLE, objets ActiveX | restreint | restreint |
Cadres vidéo | ||
Cadres audio | ||
Connecteurs | ||
Fonctionnalités des formes de groupe : | ||
Accès aux formes de groupe | ||
Création de formes de groupe | ||
Dissociation des formes de groupe existantes | ||
Fonctionnalités des effets de forme : | ||
Effets 2D | restreint | restreint |
Effets 3D | ||
Fonctionnalités de texte : | ||
Mise en forme des paragraphes | ||
Mise en forme des portions | ||
Fonctionnalités d’animation : | ||
Exporter l’animation vers SWF | ||
Exporter l’animation vers HTML |