前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dotnet Core中使用Aspose(部署Docker)

dotnet Core中使用Aspose(部署Docker)

作者头像
oec2003
发布2019-07-19 17:30:25
2.4K0
发布2019-07-19 17:30:25
举报
文章被收录于专栏:不止dotNET不止dotNET不止dotNET

dotnet下处理过Office文档的相信对Aspose都不陌生,Aspose下面的三大组件:Aspose.CellsAspose.SlidesAspose.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中,执行到下面代码的时候就会报错

Aspose.Cells.PdfSaveOptions xlsSaveOption = new Aspose.Cells.PdfSaveOptions();
xlsSaveOption.SecurityOptions = new Aspose.Cells.Rendering.PdfSecurity.PdfSecurityOptions();
xlsSaveOption.SecurityOptions.ExtractContentPermission = false;
xlsSaveOption.SecurityOptions.PrintPermission = false;
xlsSaveOption.AllColumnsInOnePagePerSheet = true;
wb.Save(pdf, xlsSaveOption); //出错行

错误信息:

The type initializer for 'Gdip' threw an exception

解决方法:

1、下载libSkiaSharp.so文件放在程序的根目录; 2、修改Dockerfile文件如下:

FROM microsoft/dotnet:2.1-aspnetcore-runtime
RUN apt-get update;apt-get install libfontconfig1 -y
RUN apt-get install libgdiplus -y
RUN ln -s /usr/lib/libgdiplus.so /lib/x86_64-linux-gnu/libgdiplus.so
RUN apt-get install -y libc6-dev
COPY . /app
WORKDIR /app
EXPOSE 80/tcp
ENTRYPOINT ["dotnet", "WebAPI.dll"]

问题2

Word导出为PDF后,中文文字不能正常显示,显示为乱码。

解决方法:

此问题的原因是因为Docker容器中没有Windows系统的字体,只需要将Windows系统中的字体文件拷贝到容器的相应目录即可解决。

参考

https://github.com/JanKallman/EPPlus/issues/83 http://jonesie.kiwi/2018/05/16/skiasharp-on-a-linux-container/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 不止dotNET 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境
  • 问题1
  • 问题2
  • 参考
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档