在Linux使用Aspose 用 excel模板生成图后字体会丢失

请教一下各位大佬
window 下生成图片正常
Linux下字体不对,这可能是什么原因导致的?

大概的代码就是这样,没有什么特殊处理:


        public static MemoryStream Try3(Worksheet sheet, int chartIndex = 0)
       {
            var chart = sheet.Charts.Skip(chartIndex).FirstOrDefault();
            chart.ToImage(ms, Aspose.Cells.Drawing.ImageType.Png);
       }

@davis1720,

请注意,将电子表格呈现为 PDF 或图像时必须使用字体,并且电子表格中使用的字体必须在操作系统的默认字体目录中可访问/可用。如果您有自定义字体文件夹,那么您应该确保底层字体位于自定义字体文件夹中,并且您已在开始时和使用其他 API 之前在代码中设置了字体目录。 如果所需的字体不存在,Aspose.Cells API 将尝试用可用的字体替换所需的字体。 Linux 操作系统上似乎没有所需的字体。 请参阅 配置字体 文档供您参考。

如果您仍然发现任何问题,请压缩并提供您的 Excel 模板文件(包含图表),我们将尽快检查您的问题。

谢回,已经设置好了字体,目前的情况是横向的字体正常,其他的字体不正常,而且饼图的图例的字体也不正常

我设置的是楷体,见下图:
image.png (15.8 KB)
image.png (25.3 KB)

这是我设置字体的代码:

SetFont(chart.Title.Font, chartData.ChartCnFontName, chartData.ChartEnFontName);
SetFont(chart.CategoryAxis.Title.Font, chartData.ChartCnFontName, chartData.ChartEnFontName);
SetFont(chart.SeriesAxis.Title.Font, chartData.ChartCnFontName, chartData.ChartEnFontName);
SetFont(chart.Legend.Font, chartData.ChartCnFontName, chartData.ChartEnFontName);
SetFont(chart.ValueAxis.Title.Font, chartData.ChartCnFontName, chartData.ChartEnFontName);

void SetFont(Font font, string cnFontName, string enFontName)
{
    if (font is TextOptions text)
    {
        if (!cnFontName.IsNullOrEmpty())
        {
            text.FarEastName = cnFontName;
        }
        if (!enFontName.IsNullOrEmpty())
        {
            text.LatinName = enFontName;
        }
    }
}

@davis1720
你愿意提供你的样例文件和可运行的控制台代码吗?请将文件和代码压缩成zip格式,然后上传到这里。我们很快就会检查。

示例代码.7z (23.2 KB)
window是正常的,主要是Linux下不行

@davis1720,

感谢您提供 Excel 模板文件和代码段。

linux下好像没有中文字体。 我之前问过您,电子表格中使用的字体必须在操作系统的字体目录中可用。 因此,您可以将字体复制到相应的文件夹中。 如果所需的字体不存在,Aspose.Cells API 将尝试用可用的字体替换所需的字体。 Linux 操作系统上似乎不提供所需的字体。 请参阅【配置字体】文档供您参考。 请务必将代码行添加到代码段中,以指定包含这些字体的文件夹。

在 Linux 上提供底层字体(e.g., .ttf 文件)并在代码中指定字体文件夹后。 然后,再次尝试您的场景/案例。 如果您仍然发现问题,请提供在 Linux 上生成的图表的输出图像。 我们将尽快调查您的问题。

Linux已经有字体了,你可以看一下我上传的图片 其中有的中文是楷体,而有的不是楷体
8391bfecf6b83da22f917a0c4349b4c.png (57.3 KB)

而且我已经通过代码设置了字体,按理来说都应该是楷体

@davis1720
通过使用样例文件和代码进行测试,我们能够复现问题。发现设置了相同字体的文本转换成图片后显示有差异。

我们已经在内部问题跟踪系统中打开了以下新问题单,并将根据Free Support Policies中提到的条款提供修复。

 问题单号: CELLSNET-55408

你好 @davis1720
我们对于这个问题进行了修复,以下是修复前后的效果对比,它会在24.5版本生效(预计5月上旬发布)。
240419.png (85.6 KB)