You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 3.1 AWS Lambda使用Aspose.Slides报libgdiplus缺失如何解决

问题原因

你当前把libgdiplus的安装命令写在了build镜像阶段,这个阶段仅用来编译代码,最终Lambda运行时使用的是final阶段基于的public.ecr.aws/lambda/dotnet:core3.1基础镜像,该镜像属于Amazon Linux系列,本身并没有安装libgdiplus依赖,且包管理工具为yum而非apt,所以运行时会触发库找不到的错误。

修复方案

调整Dockerfile,把系统依赖安装步骤移到最终运行的镜像层中,同时补充Aspose.Slides运行需要的字体相关依赖,添加libgdiplus的软链接兼容路径识别:

FROM public.ecr.aws/lambda/dotnet:core3.1 AS base  
# 在运行时基础镜像中安装所需依赖
RUN yum install -y libgdiplus fontconfig \
    && ln -s /usr/lib64/libgdiplus.so /usr/lib/libgdiplus.so \
    && ln -s /usr/lib64/libgdiplus.so.0 /usr/lib/libgdiplus.so.0 \
    && yum clean all

FROM mcr.microsoft.com/dotnet/sdk:3.1 as build  
WORKDIR /src  
COPY ["Lambda.PowerPointProcessor.csproj", "base/"]  
RUN dotnet restore "base/Lambda.PowerPointProcessor.csproj"  

WORKDIR "/src"  
COPY . .  
RUN dotnet build "Lambda.PowerPointProcessor.csproj" --configuration Release --output /app/build  

FROM build AS publish  
RUN dotnet publish "Lambda.PowerPointProcessor.csproj" \
            --configuration Release \
            --runtime linux-x64 \
            --self-contained false \
            --output /app/publish \
            -p:PublishReadyToRun=true    

FROM base AS final  
WORKDIR /var/task  
COPY --from=publish /app/publish .  
CMD ["Lambda.PowerPointProcessor::Lambda.PowerPointProcessor.Function::FunctionHandler"]

额外注意事项

  • 如果处理的PPT包含特殊中文字体,你还需要在镜像中安装对应的字体包,或者把自定义字体文件复制到镜像的/usr/share/fonts目录下,执行fc-cache -fv刷新字体缓存。
  • 如果你使用的Aspose.Slides版本高于21.6,官方已经改用跨平台的Skia渲染引擎,你也可以升级包版本,同时安装libSkiaSharp相关依赖,也可以解决该问题。

内容的提问来源于stack exchange,提问作者Waleed Naveed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:57:03