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