我正在使用Select.HtmlToPdf.NetCore(18.3.0)在Dotnetcore 2.1中将HTML转换为pdf。它可以在本地环境中完美运行,但是当与Docker托管时,会抛出错误消息,
{“ fileName”:“ System.TypeInitializationException:类型初始值设定项 因为“吉普”引发了异常。 ---> System.DllNotFoundException: 无法加载共享库'libdl'或其依赖项之一。在 为了帮助诊断加载问题,请考虑设置LD_DEBUG 环境变量:liblibdl:无法打开共享对象文件:否 这样的文件或目录\ n位于Interop.Libdl.dlopen(String fileName, Int32标志)\ n位于 System.Drawing.SafeNativeMethods.Gdip.LoadNativeLibrary()\ n在 System.Drawing.SafeNativeMethods.Gdip..cctor()\ n-内部结束 异常堆栈跟踪--- \ n在 System.Drawing.SafeNativeMethods.Gdip.GdipNewPrivateFontCollection(IntPtr& fontCollection)\ n在SelectPdf.Lib。ᡜ.. ctor()\ n在 SelectPdf.Lib。..ctor()处的SelectPdf.Lib。..ctor()\ n(ᡏA_0,A_1)\ n
在SelectPdf.HtmlToPdf。ᜁ(字符串A_0,字符串A_1,字符串A_2,字符串 A_3,布尔值A_4)\ n在SelectPdf.HtmlToPdf.ConvertHtmlString(String htmlString)
我尝试通过在Dockerfile中添加这些行集来进行尝试,但是仍然存在相同的错误。
FROM microsoft / dotnet:2.1-aspnetcore-runtime AS base
运行apt-get更新
运行apt-get install -y apt-utils
运行apt-get install -y libgdiplus
运行ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
WORKDIR / app
曝光80
答案 0 :(得分:4)
这对我有用。 我正在使用System.Drawing.Common 4.7.0运行Debian服务器
RUN apt-get update \
&& apt-get install -y --allow-unauthenticated \
libc6-dev \
libgdiplus \
libx11-dev \
&& rm -rf /var/lib/apt/lists/*
答案 1 :(得分:1)
使用iTextSharp 5.5.13.1我也面临着同样的问题,而我解决的方法是在Dockerfile中结合@Frederik Carlier的解决方案:
RUN apt-get update && apt-get -y install libxml2 libgdiplus libc6-dev
在那之后,我重新启动了Rancher Container和Rancher User Stack,它工作正常。
(使用的运行时:FROM microsoft / dotnet:2.2-aspnetcore-runtime)
答案 2 :(得分:0)
您需要在Docker容器中安装libc6-dev
。您可以通过运行以下命令来安装libc6-dev:
RUN apt-get install -y libc6-dev
让我知道怎么回事。
答案 3 :(得分:0)
我知道这是一个老问题,但是最近我遇到了这个问题,我想与我分享解决方案。
Select.HtmlToPdf.NetCore在Linux上不起作用
只是不要。如果您已经用html生成了字符串,我建议您找到此nuget: Haukcode.DinkToPdf
要查找一些教程,只需使用Google DinkToPdf 。 Haukcode刚刚更新,并且对docker更友好。
一些dockerfile的东西:
FROM microsoft/aspnetcore:2.0.0 as Base
RUN apt-get update
RUN apt-get install -y apt-utils
RUN apt-get install -y libgdiplus
RUN apt-get install -y libc6-dev
RUN ln -s /usr/lib/libgdiplus.so/usr/lib/gdiplus.dll
...
我希望它可以帮助某人:)