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アプリを作成することから始めましょう:

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”)を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);
}

プレゼンテーションスライド上の各クリックでランダムな色の楕円が追加されます:

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機能のサポート  制限あり 制限あり
PowerPoint 2019機能のサポート  制限あり  制限あり
PPT 2 PPTX変換  tick tick
PPTX 2 PPT変換  tick tick
PPTXをPPTに  制限あり 制限あり
テーマ処理  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  制限あり  制限あり 
SWF  制限あり 制限あり
SVG  tick tick
インポートフォーマット:     
HTML  制限あり 制限あり
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オブジェクト  制限あり 制限あり
ビデオフレーム  tick tick
オーディオフレーム  tick tick
コネクタ  tick tick
グループ形状機能:     
グループ形状へのアクセス  tick tick
グループ形状の作成  tick tick
既存のグループ形状のグループ解除  tick tick
形状効果機能:     
2D効果  制限あり 制限あり
3D効果  circle circle
テキスト機能:     
段落のフォーマット  tick tick
ポーションのフォーマット  tick tick
アニメーション機能:     
SWFへのアニメーションのエクスポート  circle circle
HTMLへのアニメーションのエクスポート  circle circle