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#アプリケーションを構築および利用できます。
Aspose.Slidesを使用してプレゼンテーションスライドを表示し、タッチ時にスライドに新しい形状を追加するXamarinアプリケーションのAndroidの例を提供します。例の完全なソースはGitHubで見つけることができます。
Xamarin Androidアプリを作成することから始めましょう:
まず、画像ビュー、Prev、およびNextボタンを含むコンテンツレイアウトを作成します:
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="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>
ここで、サンプルプレゼンテーション(“HelloWorld.pptx”)をXamarinアプリケーションのAssetsに含む"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;
}
}
}
ボタンをタップすることでPrevとNextスライドを表示する機能を追加しましょう:
C# - MainActivity.cs - PrevとNextボタンのクリックでスライドを表示
[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 2 PPTX変換 | ||
PPTX 2 PPT変換 | ||
PPTXをPPTに | 制限あり | 制限あり |
テーマ処理 | ||
マクロ処理 | ||
文書プロパティの処理 | ||
パスワード保護 | ||
高速テキスト抽出 | ||
フォントの埋め込み | ||
コメントのレンダリング | ||
長時間実行タスクの中断 | ||
エクスポートフォーマット: | ||
XPS | ||
HTML | ||
TIFF | ||
ODP | 制限あり | 制限あり |
SWF | 制限あり | 制限あり |
SVG | ||
インポートフォーマット: | ||
HTML | 制限あり | 制限あり |
ODP | ||
THMX | ||
マスタースライド機能: | ||
すべての既存のマスタースライドへのアクセス | ||
マスタースライドの作成/削除 | ||
マスタースライドのクローン作成 | ||
レイアウトスライド機能: | ||
すべての既存のレイアウトスライドへのアクセス | ||
レイアウトスライドの作成/削除 | ||
レイアウトスライドのクローン作成 | ||
スライド機能: | ||
すべての既存のスライドへのアクセス | ||
スライドの作成/削除 | ||
スライドのクローン作成 | ||
画像へのスライドのエクスポート | ||
スライドセクションの作成/編集/削除 | ||
ノートスライド機能: | ||
すべての既存のノートスライドへのアクセス | ||
形状機能: | ||
すべてのスライド形状へのアクセス | ||
新しい形状の追加 | ||
形状のクローン作成 | ||
別々の形状を画像にエクスポート | ||
サポートされている形状タイプ: | ||
すべての定義済み形状タイプ | ||
画像フレーム | ||
表 | ||
チャート | ||
SmartArt | ||
レガシーダイアグラム | ||
WordArt | ||
OLE、ActiveXオブジェクト | 制限あり | 制限あり |
ビデオフレーム | ||
オーディオフレーム | ||
コネクタ | ||
グループ形状機能: | ||
グループ形状へのアクセス | ||
グループ形状の作成 | ||
既存のグループ形状のグループ解除 | ||
形状効果機能: | ||
2D効果 | 制限あり | 制限あり |
3D効果 | ||
テキスト機能: | ||
段落のフォーマット | ||
ポーションのフォーマット | ||
アニメーション機能: | ||
SWFへのアニメーションのエクスポート | ||
HTMLへのアニメーションのエクスポート |