SKFontManager 在 Docker Linux 容器中使用 DevExpress Reports 生成 PDF 时抛出异常

问题描述 投票:0回答:1

我在使用

DevExpress
中的
Docker Linux container
报告生成 PDF 文件时遇到问题。我收到的错误消息是:

The type initializer for 'SkiaSharp.SKFontManager' threw an exception.

在 Windows 上运行应用程序时不会出现此问题,但在

Linux Docker container.

中部署应用程序时,此问题仍然存在

我尝试通过确保在容器内安装必要的依赖项来解决此问题,例如

libfontconfig1
libfreetype6
等。以下是我尝试过的命令:

apt-get update && \
apt-get install -yq nodejs && \
apt-get install -yq nodejs libfontconfig1 libfreetype6 && \
rm -rf /var/lib/apt/lists/*

apt update && \
apt install -y libc6 && \
apt install -y libgcc1 && \
apt install -y libgssapi-krb5-2 && \
apt install -y libicu66 && \
apt install -y libssl1.1 && \
apt install -y libfontconfig1 && \
apt install -y libicu-dev && \
apt install -y libjpeg-turbo8 && \
apt install -y libstdc++6 && \
apt install -y zlib1g && \
apt install -y gnupg ca-certificates && \

尽管做出了这些努力,错误仍然存在,特别是当应用程序到达

XtraReport
实例来加载 PDF 文件的布局时,即使升级到
.NET 7
后也是如此。

如果您能提供有关如何解决此问题并在

Docker Linux container
中成功生成 PDF 文件的任何见解或建议,我将不胜感激。预先感谢您的帮助。

.net linux docker devexpress skia
1个回答
0
投票

在 Docker Linux 容器上运行的 DevExpress.Reporting.Core 和 DevExpress.Drawing.Skia 23.2.3 也有同样的问题。

Docker 容器现在正在生成 PDF 文件。

项目是.NET 8 Api,在Program.cs文件中:

if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
    DevExpress.Drawing.Internal.DXDrawingEngine.ForceSkia();
}

然后在容器外壳中:

apt update
apt install libfreetype6 libfontconfig1 libjpeg62-turbo libpng16-16 zlib1g libx11-6 libxext6 libxrandr2 libxinerama1 libxcursor1 libxi6

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.