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

如何在Linux环境的Azure Function中运行DinkToPdf?

解决Linux Azure Function中PDF生成的libwkhtmltox.so加载问题

问题核心分析

你遇到的错误源于libwkhtmltox.so依赖缺失或文件路径配置错误,同时当前Dockerfile存在冗余复制步骤——将base层的空目录复制到Debug路径,但实际使用的是Release发布模式。

修复后的Dockerfile

FROM mcr.microsoft.com/azure-functions/dotnet:4 AS base
WORKDIR /home/site/wwwroot
# 安装wkhtmltopdf及完整依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
    wkhtmltopdf \
    libglib2.0-0 \
    libgdiplus \
    libnss3 \
    libatk1.0-0 \
    libatk-bridge2.0-0 \
    ca-certificates \
    fonts-liberation \
    libappindicator3-1 \
    libasound2 \
    libcairo2 \
    libcups2 \
    libdbus-1-3 \
    libexpat1 \
    libfontconfig1 \
    libgbm1 \
    libgcc1 \
    libgtk-3-0 \
    libnspr4 \
    libpango-1.0-0 \
    libpangocairo-1.0-0 \
    libstdc++6 \
    libx11-6 \
    libx11-xcb1 \
    libxcb1 \
    libxcomposite1 \
    libxcursor1 \
    libxdamage1 \
    libxext6 \
    libxfixes3 \
    libxi6 \
    libxrandr2 \
    libxrender1 \
    libxss1 \
    libxtst6 \
    lsb-release \
    xdg-utils \
    && rm -rf /var/lib/apt/lists/* # 清理缓存减小镜像体积
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["MP.AzureFunctions/MP.AzureFunctions.csproj", "MP.AzureFunctions/"]
RUN dotnet restore "MP.AzureFunctions/MP.AzureFunctions.csproj"
COPY . .
WORKDIR "/src/MP.AzureFunctions"
RUN dotnet build "MP.AzureFunctions.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MP.AzureFunctions.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /home/site/wwwroot
COPY --from=publish /app/publish .
# 若项目自带libwkhtmltox.so,添加以下命令(根据实际路径调整):
# COPY --from=publish /app/publish/bin/libwkhtmltox.so /usr/lib/
# RUN ldconfig

ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true

关键修复点

  • 安装官方wkhtmltopdf包:直接通过apt安装,自带libwkhtmltox.so,避免手动管理库文件的麻烦。
  • 删除冗余复制步骤:移除了无意义的Debug路径复制操作,与Release发布模式保持一致。
  • 优化依赖安装:用--no-install-recommends减少冗余依赖,同时清理apt缓存缩小镜像体积。
  • 项目自带库的适配:如果项目手动引入libwkhtmltox.so,需将其复制到系统库目录(如/usr/lib/)并执行ldconfig更新缓存,确保系统能识别。

代码层面检查

  • 确认PDF生成代码中libwkhtmltox.so的路径配置:
    • apt安装的wkhtmltopdf默认路径为/usr/lib/x86_64-linux-gnu/libwkhtmltox.so,代码可直接引用该路径或让系统自动查找。
    • 若为项目自带库,需保证代码指定路径与Dockerfile中的复制路径一致。

内容的提问来源于stack exchange,提问作者Oleh Deyneka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:57:40