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:

todo:image_alt_text

Primero, creamos un diseño de contenido que contendrá una vista de imagen y los botones Anterior y Siguiente:

todo:image_alt_text

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:

todo:image_alt_text

Características compatibles

CARACTERÍSTICAS Aspose.Slides para .NET Aspose.Slides para Xamarin
Características de presentación:
Crear nuevas presentaciones tick tick
Formatos de PowerPoint 97 - 2003 abrir/guardar tick tick
Formatos de PowerPoint 2007 abrir/guardar tick tick
Soporte para extensiones de PowerPoint 2010 tick tick
Soporte para extensiones de PowerPoint 2013 tick tick
Soporte para características de PowerPoint 2016 restringido restringido
Soporte para características de PowerPoint 2019 restringido restringido
Conversión de PPT a PPTX tick tick
Conversión de PPTX a PPT tick tick
PPTX en PPT restringido restringido
Procesamiento de temas tick tick
Procesamiento de macros tick tick
Procesamiento de propiedades del documento tick tick
Protección por contraseña tick tick
Extracción rápida de texto tick tick
Incrustación de fuentes tick tick
Renderización de comentarios tick tick
Interrupción de tareas de larga ejecución tick tick
Formatos de exportación:
PDF tick tick
XPS tick tick
HTML tick tick
TIFF tick circle
ODP restringido restringido
SWF restringido restringido
SVG tick tick
Formatos de importación:
HTML restringido restringido
ODP tick tick
THMX tick tick
Características de diapositivas maestras:
Acceder a todas las diapositivas maestras existentes tick tick
Crear/eliminar diapositivas maestras tick tick
Clonar diapositivas maestras tick tick
Características de diseño de diapositivas:
Acceder a todas las diapositivas de diseño existentes tick tick
Crear/eliminar diapositivas de diseño tick tick
Clonar diapositivas de diseño tick tick
Características de diapositivas:
Acceder a todas las diapositivas existentes tick tick
Crear/eliminar diapositivas tick tick
Clonar diapositivas tick tick
Exportar diapositivas a imágenes tick tick
Crear/editar/eliminar secciones de diapositivas tick tick
Características de diapositivas de notas:
Acceder a todas las diapositivas de notas existentes tick tick
Características de formas:
Acceder a todas las formas de las diapositivas tick tick
Agregar nuevas formas tick tick
Clonar formas tick tick
Exportar formas individuales a imágenes tick tick
Tipos de formas compatibles:
Todos los tipos de formas predefinidos tick tick
Marcos de imagen tick tick
Tablas tick tick
Gráficos tick tick
SmartArt tick tick
Diagrama legado tick tick
WordArt tick tick
Objetos OLE, ActiveX restringido restringido
Marcos de video tick tick
Marcos de audio tick tick
Conectores tick tick
Características de formas agrupadas:
Acceder a formas agrupadas tick tick
Crear formas agrupadas tick tick
Desagrupar formas agrupadas existentes tick tick
Características de efectos de forma:
Efectos 2D restringido restringido
Efectos 3D circle circle
Características de texto:
Formateo de párrafos tick tick
Formateo de porciones tick tick
Características de animación:
Exportar animación a SWF circle circle
Exportar animación a HTML circle circle