dotNET Core中使用Aspose(部署Docker)
在dotnet
下处理过Office
文档的相信对Aspose
都不陌生,Aspose
下面的三大组件:Aspose.Cells
、Aspose.Slides
、Aspose.Words
可以让我们很方便的操作Office
文档,或者将Office
导出为PDF
。
最近在netcore2.1
下使用Aspose
操作Office
,开发人员在Windows
下进行开发时没有任何问题,但将程序部署到Docker
中时出现错误,本文主要介绍下解决方法。
环境
- netcore:2.1
- docker:18.03-ce
- CentOS:7.5
- Aspose:18.6
问题1
程序部署到Docker
中,执行到下面代码的时候就会报错
1 | Aspose.Cells.PdfSaveOptions xlsSaveOption = new Aspose.Cells.PdfSaveOptions(); |
错误信息:
The type initializer for ‘Gdip’ threw an exception
解决方法:
1、下载libSkiaSharp.so
文件放在程序的根目录;
2、修改Dockerfile
文件如下:
1 | FROM microsoft/dotnet:2.1-aspnetcore-runtime |
问题2
将Word
导出为PDF
后,中文文字不能正常显示,显示为乱码。
解决方法:
此问题的原因是因为Docker
容器中没有Windows
系统的字体,只需要将Windows
系统中的字体文件拷贝到容器的相应目录即可解决。
参考
https://github.com/JanKallman/EPPlus/issues/83
http://jonesie.kiwi/2018/05/16/skiasharp-on-a-linux-container/