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
(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,
感谢您提供 Excel 模板文件和代码段。
linux下好像没有中文字体。 我之前问过您,电子表格中使用的字体必须在操作系统的字体目录中可用。 因此,您可以将字体复制到相应的文件夹中。 如果所需的字体不存在,Aspose.Cells API 将尝试用可用的字体替换所需的字体。 Linux 操作系统上似乎不提供所需的字体。 请参阅【配置字体】文档供您参考。 请务必将代码行添加到代码段中,以指定包含这些字体的文件夹。
在 Linux 上提供底层字体(e.g., .ttf 文件)并在代码中指定字体文件夹后。 然后,再次尝试您的场景/案例。 如果您仍然发现问题,请提供在 Linux 上生成的图表的输出图像。 我们将尽快调查您的问题。
@davis1720
通过使用样例文件和代码进行测试,我们能够复现问题。发现设置了相同字体的文本转换成图片后显示有差异。
我们已经在内部问题跟踪系统中打开了以下新问题单,并将根据Free Support Policies中提到的条款提供修复。
问题单号: CELLSNET-55408