Aspose.Slides para Xamarin
Descripción general
Xamarin es un marco de trabajo utilizado para el desarrollo móvil en .NET C#. Xamarin cuenta con herramientas y bibliotecas que amplían las capacidades de la plataforma .NET. Permite a los desarrolladores crear aplicaciones para el sistema operativo Android.
La API de Aspose.Slides funciona en la plataforma Xamarin. Para lograr esto, el paquete Aspose.Slides .NET agrega una DLL separada para Xamarin. Aspose.Slides para Xamarin admite la mayoría de las características disponibles en la versión .NET:
- conversión y visualización de presentaciones.
- edición de contenidos en presentaciones: texto, formas, gráficos, SmartArt, audio/video, fuentes, etc.
- manejo/trato con animación, efectos 2D, WordArt, etc.
- manejo/trato con metadatos y propiedades del documento.
- impresión, clonación, fusión, comparación, división, etc.
Proporcionamos una comparación de las características completas en otra sección cerca de la parte inferior de esta página.
En la API de Aspose.Slides para Xamarin, las clases, espacios de nombres, lógica y comportamiento son lo más similares posible a la versión .NET. Puedes migrar tus aplicaciones Aspose.Slides .NET a Xamarin con costos mínimos.
Ejemplo rápido
Puedes usar Aspose.Slides para Xamarin para construir y utilizar tu aplicación C# a través de Slides para Android.
Estamos proporcionando un ejemplo de aplicación de Android a través de Xamarin que utiliza Aspose.Slides para mostrar las diapositivas de presentación y agrega una nueva forma en la diapositiva al tocar. Puedes encontrar el código fuente completo de los ejemplos en GitHub.
Comencemos creando una aplicación Xamarin Android:
Primero, creamos un diseño de contenido que contendrá una vista de imagen y los botones Anterior y Siguiente:
XML - content_main.xml - Crear diseño de contenido
<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>
Aquí, hacemos referencia a la biblioteca “Aspose.Slides.Droid.dll” que incluye una presentación de ejemplo (“HelloWorld.pptx”) en los Assets de la aplicación Xamarin y agrega su inicialización en MainActivity:
C# - MainActivity.cs - Inicialización
[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;
}
}
}
Agreguemos la función para mostrar las diapositivas Anterior y Siguiente al tocar los botones:
C# - MainActivity.cs - Mostrar diapositivas al hacer clic en los botones Anterior y Siguiente
[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;
}
}
Finalmente, implementemos una función para agregar una forma elíptica al tocar la diapositiva:
C# - MainActivity.cs - Agregar elipse al hacer clic en la 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);
}
Cada clic en la diapositiva de presentación hace que se agregue una elipse de color aleatorio:
Características compatibles
CARACTERÍSTICAS | Aspose.Slides para .NET | Aspose.Slides para Xamarin |
---|---|---|
Características de presentación: | ||
Crear nuevas presentaciones | ||
Formatos de PowerPoint 97 - 2003 abrir/guardar | ||
Formatos de PowerPoint 2007 abrir/guardar | ||
Soporte para extensiones de PowerPoint 2010 | ||
Soporte para extensiones de PowerPoint 2013 | ||
Soporte para características de PowerPoint 2016 | restringido | restringido |
Soporte para características de PowerPoint 2019 | restringido | restringido |
Conversión de PPT a PPTX | ||
Conversión de PPTX a PPT | ||
PPTX en PPT | restringido | restringido |
Procesamiento de temas | ||
Procesamiento de macros | ||
Procesamiento de propiedades del documento | ||
Protección por contraseña | ||
Extracción rápida de texto | ||
Incrustación de fuentes | ||
Renderización de comentarios | ||
Interrupción de tareas de larga ejecución | ||
Formatos de exportación: | ||
XPS | ||
HTML | ||
TIFF | ||
ODP | restringido | restringido |
SWF | restringido | restringido |
SVG | ||
Formatos de importación: | ||
HTML | restringido | restringido |
ODP | ||
THMX | ||
Características de diapositivas maestras: | ||
Acceder a todas las diapositivas maestras existentes | ||
Crear/eliminar diapositivas maestras | ||
Clonar diapositivas maestras | ||
Características de diseño de diapositivas: | ||
Acceder a todas las diapositivas de diseño existentes | ||
Crear/eliminar diapositivas de diseño | ||
Clonar diapositivas de diseño | ||
Características de diapositivas: | ||
Acceder a todas las diapositivas existentes | ||
Crear/eliminar diapositivas | ||
Clonar diapositivas | ||
Exportar diapositivas a imágenes | ||
Crear/editar/eliminar secciones de diapositivas | ||
Características de diapositivas de notas: | ||
Acceder a todas las diapositivas de notas existentes | ||
Características de formas: | ||
Acceder a todas las formas de las diapositivas | ||
Agregar nuevas formas | ||
Clonar formas | ||
Exportar formas individuales a imágenes | ||
Tipos de formas compatibles: | ||
Todos los tipos de formas predefinidos | ||
Marcos de imagen | ||
Tablas | ||
Gráficos | ||
SmartArt | ||
Diagrama legado | ||
WordArt | ||
Objetos OLE, ActiveX | restringido | restringido |
Marcos de video | ||
Marcos de audio | ||
Conectores | ||
Características de formas agrupadas: | ||
Acceder a formas agrupadas | ||
Crear formas agrupadas | ||
Desagrupar formas agrupadas existentes | ||
Características de efectos de forma: | ||
Efectos 2D | restringido | restringido |
Efectos 3D | ||
Características de texto: | ||
Formateo de párrafos | ||
Formateo de porciones | ||
Características de animación: | ||
Exportar animación a SWF | ||
Exportar animación a HTML |