在 Linux Docker 容器中使用 Syncfusion .NET Core 库将 XLSX 转换为 PDF

Convert XLSX to PDF using Syncfusion .NET Core library in a Linux Docker Container

我能够 运行 在本地执行此应用程序(.net core 3.1 控制台应用程序)。如果我 运行 在 Linux Docker 容器中,我会收到以下错误:

{System.ArgumentNullException: Value cannot be null. (Parameter 'fontFile') at Syncfusion.Pdf.Graphics.PdfTrueTypeFont.CreateFontInternal(Stream fontStream, PdfFontStyle style)

我正在做的是使用替换值编辑现有的 XLSX 文件,例如:

worksheet.Range["C10"].Text = summary.User.Name;

我可以省下这笔罚款。下一步是将其转换为 PDF,这一切都将分崩离析。 PS 我可以很好地创建新的 PDF 文档,只有在进行转换时才会出现问题。

//Convert Excel document into PDF document 
PdfDocument pdfDocument = renderer.ConvertToPDF(worksheet);

无论我是转换 sheet 还是整个工作簿,都会发生这种情况。

我已将 excel 文件中的所有文本更改为标准格式,例如 Arial,但问题仍然存在。

字体未安装在 docker 容器中。因此,当通过 Docker 将 Excel 转换为 PDF 时会引发异常。我们要求您在 Docker 文件的第一行之后使用以下代码将字体安装到容器中以解决此问题。

FROM mcr.microsoft.com/dotnet/core/runtime:3.0-buster-slim AS base 
RUN apt-get update -y && apt-get install libfontconfig -y 
ENV LANG="en_US.UTF-8"