Unity は PPT をロードして表示します

参考リンク1

参考リンク2

予防:

1. コードは Aspose.Slides System.Drawing I18N シリーズの dll を使用する必要があり、プロジェクト設定は net4.0 です。

2. Unity バージョンの要件があり、System.Drawing.dll は現在の Unity バージョンから取得する必要があります。


3. エクスポート後に正常にロードされない場合があります。Unity の新しいバージョン (2018 など) のインストール ディレクトリ Editor\Data\MonoBleedingEdge\lib\mono\unityjit で I18N.dll および I18N.West.dll ファイルを見つけて、パッケージ化された XX_Data/Managedフォルダーにコピーして貼り付けます

using System;
using System.Drawing.Imaging;
using Aspose.Slides;
using System.IO;
using UnityEngine;
using UnityEngine.UI;

public class PPTCtrl_fan1 : MonoBehaviour
{
    public Image pptImage;
    private Presentation presentation;
    private int index = 0;
    private int pptPage;
    private string pptPath;

    //去水印key
    public const string Key =
            "PExpY2Vuc2U+DQogIDxEYXRhPg0KICAgIDxMaWNlbnNlZFRvPkFzcG9zZSBTY290bGFuZCB" +
            "UZWFtPC9MaWNlbnNlZFRvPg0KICAgIDxFbWFpbFRvPmJpbGx5Lmx1bmRpZUBhc3Bvc2UuY2" +
            "9tPC9FbWFpbFRvPg0KICAgIDxMaWNlbnNlVHlwZT5EZXZlbG9wZXIgT0VNPC9MaWNlbnNlV" +
            "HlwZT4NCiAgICA8TGljZW5zZU5vdGU+TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1p" +
            "dGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU+DQogICAgPE9yZGVySUQ+MTQ" +
            "wNDA4MDUyMzI0PC9PcmRlcklEPg0KICAgIDxVc2VySUQ+OTQyMzY8L1VzZXJJRD4NCiAgIC" +
            "A8T0VNPlRoaXMgaXMgYSByZWRpc3RyaWJ1dGFibGUgbGljZW5zZTwvT0VNPg0KICAgIDxQc" +
            "m9kdWN0cz4NCiAgICAgIDxQcm9kdWN0PkFzcG9zZS5Ub3RhbCBmb3IgLk5FVDwvUHJvZHVj" +
            "dD4NCiAgICA8L1Byb2R1Y3RzPg0KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl" +
            "0aW9uVHlwZT4NCiAgICA8U2VyaWFsTnVtYmVyPjlhNTk1NDdjLTQxZjAtNDI4Yi1iYTcyLT" +
            "djNDM2OGYxNTFkNzwvU2VyaWFsTnVtYmVyPg0KICAgIDxTdWJzY3JpcHRpb25FeHBpcnk+M" +
            "jAxNTEyMzE8L1N1YnNjcmlwdGlvbkV4cGlyeT4NCiAgICA8TGljZW5zZVZlcnNpb24+My4w" +
            "PC9MaWNlbnNlVmVyc2lvbj4NCiAgICA8TGljZW5zZUluc3RydWN0aW9ucz5odHRwOi8vd3d" +
            "3LmFzcG9zZS5jb20vY29ycG9yYXRlL3B1cmNoYXNlL2xpY2Vuc2UtaW5zdHJ1Y3Rpb25zLm" +
            "FzcHg8L0xpY2Vuc2VJbnN0cnVjdGlvbnM+DQogIDwvRGF0YT4NCiAgPFNpZ25hdHVyZT5GT" +
            "zNQSHNibGdEdDhGNTlzTVQxbDFhbXlpOXFrMlY2RThkUWtJUDdMZFRKU3hEaWJORUZ1MXpP" +
            "aW5RYnFGZkt2L3J1dHR2Y3hvUk9rYzF0VWUwRHRPNmNQMVpmNkowVmVtZ1NZOGkvTFpFQ1R" +
            "Hc3pScUpWUVJaME1vVm5CaHVQQUprNWVsaTdmaFZjRjhoV2QzRTRYUTNMemZtSkN1YWoyTk" +
            "V0ZVJpNUhyZmc9PC9TaWduYXR1cmU+DQo8L0xpY2Vuc2U+";

    private void Start()
    {
        pptPath = "测试.pptx";

        Load(pptPath);
        LoadPPTByIndex(index);

    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            index--;
            index = index >= 0 ? index : 0;
            LoadPPTByIndex(index);
        }

        if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            index++;
            index = index <= pptPage - 1 ? index : pptPage - 1;
            LoadPPTByIndex(index);
        }
    }
    public void Load(string pptPath)
    {
        //去水印代码
        new Aspose.Slides.License().SetLicense(new MemoryStream(Convert.FromBase64String(Key)));

        pptPath = Application.streamingAssetsPath + "/PPT/"+ pptPath;

        presentation = new Aspose.Slides.Presentation(pptPath);
        pptPage = presentation.Slides.Count;
    
    }

    public void LoadPPTByIndex(int index)
    {
        var slide = presentation.Slides[index];

        var bitmap = slide.GetThumbnail(1f, 1f);

        byte[] bytes = Bitmap2Byte(bitmap);

       

        int pptWidth = Convert.ToInt16(presentation.SlideSize.Size.Width);
        int pptHeight = Convert.ToInt16(presentation.SlideSize.Size.Height);

        Texture2D texture2D = new Texture2D(pptWidth, pptHeight);

        texture2D.LoadImage(bytes);

        Sprite sprite = Sprite.Create(texture2D, new Rect(0, 0, pptWidth, pptHeight), Vector2.zero);

        pptImage.sprite = sprite;
    }

    public byte[] Bitmap2Byte(System.Drawing.Bitmap bitmap)
    {
        using (MemoryStream stream = new MemoryStream())
        {
            bitmap.Save(stream, ImageFormat.Png);

            byte[] data = new byte[stream.Length];

            stream.Seek(0, SeekOrigin.Begin);

            stream.Read(data, 0, Convert.ToInt32(stream.Length));

            return data;
        }
    }
}

 DLL リンク: https://pan.baidu.com/s/1e8qksqTcde5_cX2LhIwqcw 
抽出コード: 8174

おすすめ

転載: blog.csdn.net/fanfan_hongyun/article/details/128062733