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 アプリの作成から始めましょう。

todo:image_alt_text

まず、画像ビュー、Prev、Next ボタンを含むコンテンツ レイアウトを作成します。

todo:image_alt_text

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”)を含む “Aspose.Slides.Droid.dll” ライブラリを Xamarin アプリケーションの Assets に参照し、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);
}

プレゼンテーション スライドをクリックするたびに、ランダムな色の楕円形が追加されます。

todo:image_alt_text

サポートされている機能

機能 Aspose.Slides for .NET Aspose.Slides for Xamarin
プレゼンテーション機能:
新しいプレゼンテーションの作成 tick tick
PowerPoint 97‑2003 形式の開閉 tick tick
PowerPoint 2007 形式の開閉 tick tick
PowerPoint 2010 拡張機能のサポート tick tick
PowerPoint 2013 拡張機能のサポート tick tick
PowerPoint 2016 機能のサポート restricted restricted
PowerPoint 2019 機能のサポート restricted restricted
PPT から PPTX への変換 tick tick
PPTX から PPT への変換 tick tick
PPT 内の PPTX restricted restricted
テーマの処理 tick tick
マクロの処理 tick tick
ドキュメント プロパティの処理 tick tick
パスワード保護 tick tick
高速テキスト抽出 tick tick
フォントの埋め込み tick tick
コメントのレンダリング tick tick
長時間タスクの中断 tick tick
エクスポート形式:
PDF tick tick
XPS tick tick
HTML tick tick
TIFF tick circle
ODP restricted restricted
SWF restricted restricted
SVG tick tick
インポート形式:
HTML restricted restricted
ODP tick tick
THMX tick tick
マスタースライド機能:
既存のすべてのマスタースライドへのアクセス tick tick
マスタースライドの作成/削除 tick tick
マスタースライドのクローン作成 tick tick
レイアウトスライド機能:
既存のすべてのレイアウトスライドへのアクセス tick tick
レイアウトスライドの作成/削除 tick tick
レイアウトスライドのクローン作成 tick tick
スライド機能:
既存のすべてのスライドへのアクセス tick tick
スライドの作成/削除 tick tick
スライドのクローン作成 tick tick
スライドを画像へエクスポート tick tick
スライド セクションの作成/編集/削除 tick tick
ノートスライド機能
既存のすべてのノートスライドへのアクセス tick tick
図形機能:
スライド上のすべての図形へのアクセス tick tick
新しい図形の追加 tick tick
図形のクローン作成 tick tick
個別の図形を画像へエクスポート tick tick
サポートされている図形タイプ:
すべての事前定義された図形タイプ tick tick
画像フレーム tick tick
テーブル tick tick
チャート tick tick
SmartArt tick tick
レガシーダイアグラム tick tick
WordArt tick tick
OLE、ActiveX オブジェクト restricted restricted
ビデオフレーム tick tick
オーディオフレーム tick tick
コネクタ tick tick
グループ図形機能:
グループ図形へのアクセス tick tick
グループ図形の作成 tick tick
既存のグループ図形の解除 tick tick
図形エフェクト機能:
2D エフェクト restricted restricted
3D エフェクト circle circle
テキスト機能:
段落書式設定 tick tick
文字列書式設定 tick tick
アニメーション機能:
アニメーションを SWF にエクスポート circle circle
アニメーションを HTML にエクスポート circle circle