注意事项:
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