Aspose.Slides para Xamarin

Introdução

Xamarin é um framework usado para desenvolvimento móvel em .NET C#. Xamarin possui ferramentas e bibliotecas que estendem as capacidades da plataforma .NET. Ele permite que os desenvolvedores criem aplicativos para o sistema operacional Android.

A API Aspose.Slides funciona na plataforma Xamarin. Para isso, o pacote Aspose.Slides .NET adiciona um DLL separado para Xamarin. Aspose.Slides for Xamarin suporta a maioria dos recursos disponíveis na versão .NET:

  • converter e visualizar apresentações.
  • editar conteúdos em apresentações: texto, formas, gráficos, SmartArt, áudio/vídeo, fontes, etc.
  • tratar/manusear animação, efeitos 2D, WordArt, etc.
  • tratar/manusear metadados e propriedades do documento.
  • impressão, clonagem, mesclagem, comparação, divisão, etc.

Fornecemos uma comparação de todos os recursos em outra seção próximo ao final desta página.

Na API Aspose.Slides for Xamarin, as classes, namespaces, lógica e comportamento são tão semelhantes quanto possível à versão .NET. Você pode migrar suas aplicações Aspose.Slides .NET para Xamarin com custos mínimos.

Exemplo Rápido

Você pode usar Aspose.Slides for Xamarin para construir e utilizar sua aplicação C# através do Slides for Android.

Estamos fornecendo um exemplo de aplicação Android via Xamarin que usa Aspose.Slides para exibir slides de apresentação e adiciona uma nova forma no slide ao tocar. Você pode encontrar o código completo dos exemplos no GitHub.

Vamos começar criando um aplicativo Xamarin Android:

todo:image_alt_text

Primeiro, criamos um layout de conteúdo que conterá uma visualização de imagem, botões Anterior e Próximo:

todo:image_alt_text

XML - content_main.xml - Criar layout de conteúdo

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

Aqui, referenciamos a biblioteca “Aspose.Slides.Droid.dll” que inclui uma apresentação de exemplo (“HelloWorld.pptx”) nos Assets da aplicação Xamarin e adicionamos sua inicialização ao MainActivity:

C# - MainActivity.cs - Inicialização

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

Vamos adicionar a função para exibir os slides Anterior e Próximo ao tocar nos botões:

C# - MainActivity.cs - Exibir slides ao clicar nos botões Anterior e Próximo

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

}

Por fim, vamos implementar uma função para adicionar uma forma elíptica ao tocar no slide:

C# - MainActivity.cs - Adicionar elipse ao clicar no slide

 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 clique no slide da apresentação adiciona uma elipse de cor aleatória: todo:image_alt_text

Recursos Compatíveis

RECURSOS Aspose.Slides for .NET Aspose.Slides for Xamarin
Recursos de apresentação:
Criar novas apresentações tick tick
Abrir/salvar formatos PowerPoint 97 - 2003 tick tick
Abrir/salvar formatos PowerPoint 2007 tick tick
Suporte a extensões PowerPoint 2010 tick tick
Suporte a extensões PowerPoint 2013 tick tick
Suporte a recursos PowerPoint 2016 restrito restrito
Suporte a recursos PowerPoint 2019 restrito restrito
Conversão PPT para PPTX tick tick
Conversão PPTX para PPT tick tick
PPTX em PPT restrito restrito
Processamento de temas tick tick
Processamento de macros tick tick
Processamento de propriedades do documento tick tick
Proteção por senha tick tick
Extração rápida de texto tick tick
Incorporação de fontes tick tick
Renderização de comentários tick tick
Interrupção de tarefas de longa duração tick tick
Formatos de exportação:
PDF tick tick
XPS tick tick
HTML tick tick
TIFF tick circle
ODP restrito restrito
SWF restrito restrito
SVG tick tick
Formatos de importação:
HTML restrito restrito
ODP tick tick
THMX tick tick
Recursos de slides mestre:
Acesso a todos os slides mestre existentes tick tick
Criar/remover slides mestre tick tick
Clonar slides mestre tick tick
Recursos de layout de slides:
Acesso a todos os layouts de slides existentes tick tick
Criar/remover layouts de slides tick tick
Clonar layouts de slides tick tick
Recursos de slide:
Acesso a todos os slides existentes tick tick
Criar/remover slides tick tick
Clonar slides tick tick
Exportar slides para imagens tick tick
Criar/editar/remover seções de slide tick tick
Recursos de notas de slide:
Acesso a todas as notas de slide existentes tick tick
Recursos de forma:
Acesso a todas as formas do slide tick tick
Adicionar novas formas tick tick
Clonar formas tick tick
Exportar formas individuais para imagens tick tick
Tipos de forma suportados:
Todos os tipos de forma predefinidos tick tick
Quadros de imagem tick tick
Tabelas tick tick
Gráficos tick tick
SmartArt tick tick
Diagramas legados tick tick
WordArt tick tick
OLE, objetos ActiveX restrito restrito
Quadros de vídeo tick tick
Quadros de áudio tick tick
Conectores tick tick
Recursos de grupo de formas:
Acesso a grupos de formas tick tick
Criar grupos de formas tick tick
Desagrupar grupos de formas existentes tick tick
Recursos de efeitos de forma:
Efeitos 2D restrito restrito
Efeitos 3D circle circle
Recursos de texto:
Formatação de parágrafos tick tick
Formatação de trechos tick tick
Recursos de animação:
Exportar animação para SWF circle circle
Exportar animação para HTML circle circle