unity打开ppt 打包后也可以运行

代码如下

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

public class LoadPPT : 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 = Application.streamingAssetsPath + "/卡通幼儿园.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)));

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

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

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

        byte[] bytes = Bitmap2Byte(bitmap);

        //int width = 1276, height = 425;
        int width = 960, height = 540; //ppt的宽高

        Texture2D texture2D = new Texture2D(width, height);

        texture2D.LoadImage(bytes);

        Sprite sprite = Sprite.Create(texture2D, new Rect(0, 0, width, height), 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;
        }
    }

}

代码需要用到Aspose.Slides    System.Drawing   I18N系列的dll,工程设置为net4.0
使用方法:将代码挂在某个节点上。pptImage是需要显示ppt内容的image,改一下pptPath,width,height就可以了

示例工程:链接: https://pan.baidu.com/s/1hONHtqnYe9vzQ2rtz2qUCA 提取码: xt7u 复制这段内容后打开百度网盘手机App,操作更方便哦

后续经过测试:

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

这样就不用把width和height写死了

参考链接:https://www.jianshu.com/p/c83add8def03

https://blog.csdn.net/asdfghjkl110292/article/details/94551204

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
Unity 是一款跨平台的游戏引擎,可以为多种平台打包生成可执行文件(exe)。通常情况下,Unity 打包生成的 exe 文件并不会影响其他应用程序或文件的打开运行。但如果在使用 Unity 打包生成的 exe 文件后无法打开 Excel 文件,可能存在以下几个可能的原因: 1. 文件路径问题:在 Unity打包生成的 exe 文件通常是放在一个独立的文件夹中,如果 Excel 文件的路径在打包后发生改变,就无法正确地访问到该文件。解决方法是确保 Excel 文件在打包后的路径保持一致,或者在 Unity 代码中使用绝对路径来访问 Excel 文件。 2. Excel 版本问题:如果 Unity 打包后生成的 exe 文件是在旧版本的 Excel 上无法打开,可能是因为生成的 exe 文件所使用的库或插件与当前 Excel 版本不兼容。此时可以尝试在最新版本的 Excel 上打开该文件或者更新 Unity 对应的库或插件版本。 3. 安全软件阻止:某些安全软件或防火墙可能会将 Unity 打包生成的 exe 文件标记为潜在的风险或恶意程序,并阻止其打开其他文件。可以尝试在安全软件或防火墙设置中将 Unity 打包生成的 exe 文件添加到信任列表中。 总结起来,Unity 打包生成的 exe 文件无法打开 Excel 文件可能是由于文件路径问题、Excel 版本问题或安全软件的阻止。在解决问题时可以先确保文件路径正确,尝试使用最新版本的 Excel 以及更新相关库或插件,并检查安全软件或防火墙设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值