Aspose.Slides for Xamarin
概述
Xamarin是一个用于.NET C#的移动开发框架。Xamarin拥有扩展.NET平台能力的工具和库。它允许开发者为Android操作系统构建应用程序。
Aspose.Slides API在Xamarin平台上运行。为此,Aspose.Slides .NET包为Xamarin添加了一个单独的DLL。Aspose.Slides for Xamarin支持.NET版本中大多数可用功能:
- 转换和查看演示文稿。
- 编辑演示文稿中的内容:文本、形状、图表、SmartArt、音频/视频、字体等。
- 处理/应对动画、2D效果、WordArt等。
- 处理/处理元数据和文档属性。
- 打印、克隆、合并、比较、分割等。
我们在本页底部的另一个部分提供了完整功能的比较。
在Aspose.Slides for Xamarin API中,类、命名空间、逻辑和行为尽可能与.NET版本相似。您可以以最小的成本将Aspose.Slides .NET应用程序迁移到Xamarin。
快速示例
您可以使用Aspose.Slides for Xamarin通过Slides for Android构建和利用您的C#应用程序。
我们提供了一个通过Xamarin的Android应用示例,使用Aspose.Slides显示演示文稿幻灯片,并在触摸时在幻灯片上添加一个新形状。您可以在GitHub上找到示例的完整源代码。
让我们开始创建一个Xamarin Android应用:
首先,我们创建一个将包含图像视图、上一步和下一步按钮的内容布局:
XML - content_main.xml - 创建内容布局
<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="上一步"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonPrev" />
<Button
android:text="下一步"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonNext"/>
</LinearLayout>
</LinearLayout>
在这里,我们引用了包含示例演示文稿(“HelloWorld.pptx”)的"Aspose.Slides.Droid.dll"库,并将其初始化添加到MainActivity:
C# - MainActivity.cs - 初始化
[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;
}
}
}
让我们添加一个函数,用于在点击按钮时显示上一步和下一步的幻灯片:
C# - MainActivity.cs - 点击上一步和下一步按钮时显示幻灯片
[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;
}
}
最后,让我们实现一个在幻灯片触摸时添加椭圆形状的函数:
C# - MainActivity.cs - 点击幻灯片时添加椭圆形
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);
}
每次点击演示文稿幻灯片都会添加一个随机颜色的椭圆:
支持的功能
功能 | Aspose.Slides for .NET | Aspose.Slides for Xamarin |
---|---|---|
演示文稿功能: | ||
创建新演示文稿 | ||
PowerPoint 97 - 2003格式打开/保存 | ||
PowerPoint 2007格式打开/保存 | ||
支持PowerPoint 2010扩展 | ||
支持PowerPoint 2013扩展 | ||
支持PowerPoint 2016功能 | 受限 | 受限 |
支持PowerPoint 2019功能 | 受限 | 受限 |
PPT到PPTX转换 | ||
PPTX到PPT转换 | ||
PPTX在PPT中 | 受限 | 受限 |
主题处理 | ||
宏处理 | ||
文档属性处理 | ||
密码保护 | ||
快速文本提取 | ||
嵌入字体 | ||
评论渲染 | ||
中断长时间运行的任务 | ||
导出格式: | ||
XPS | ||
HTML | ||
TIFF | ||
ODP | 受限 | 受限 |
SWF | 受限 | 受限 |
SVG | ||
导入格式: | ||
HTML | 受限 | 受限 |
ODP | ||
THMX | ||
母版幻灯片功能: | ||
访问所有现有母版幻灯片 | ||
创建/删除母版幻灯片 | ||
克隆母版幻灯片 | ||
布局幻灯片功能: | ||
访问所有现有布局幻灯片 | ||
创建/删除布局幻灯片 | ||
克隆布局幻灯片 | ||
幻灯片功能: | ||
访问所有现有幻灯片 | ||
创建/删除幻灯片 | ||
克隆幻灯片 | ||
将幻灯片导出为图像 | ||
创建/编辑/删除幻灯片部分 | ||
备注幻灯片功能: | ||
访问所有现有备注幻灯片 | ||
形状功能: | ||
访问所有幻灯片形状 | ||
添加新形状 | ||
克隆形状 | ||
将单独形状导出为图像 | ||
支持的形状类型: | ||
所有预定义形状类型 | ||
图片框 | ||
表格 | ||
图表 | ||
SmartArt | ||
旧版图 | ||
WordArt | ||
OLE、ActiveX对象 | 受限 | 受限 |
视频框 | ||
音频框 | ||
连接线 | ||
组合形状功能: | ||
访问组合形状 | ||
创建组合形状 | ||
取消组合现有组合形状 | ||
形状特效功能: | ||
2D特效 | 受限 | 受限 |
3D特效 | ||
文本功能: | ||
段落格式 | ||
部分格式 | ||
动画功能: | ||
将动画导出为SWF | ||
将动画导出为HTML |