获取在将Excel文件渲染为PDF时字体替换的警告信息
要在将Excel文件渲染为PDF时获取字体替换的警告信息,请实现IWarningCallback
接口,并将PdfSaveOptions.WarningCallback
属性设置为您的实现类。
下面的屏幕截图显示了我们将在以下代码中使用的源Excel文件。在单元格A6和A7中有一些文本,微软Excel无法正确呈现其中的字体。
并非所有字体都能正确呈现 |
---|
![]() |
Aspose.Cells将使用合适的字体替换单元格A6和A7中的字体,如下所示。
替换字体 |
---|
![]() |
下载源文件和输出PDF
您可以从以下链接下载示例Excel文件和输出的PDF:
代码
以下代码实现了IWarningCallback
并使用实现的接口设置了PdfSaveOptions.WarningCallback
属性。现在,每当任何字体在任何单元格中被替换时,Aspose.Cells将在WarningCallback.Warning()
方法中触发警告。
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
class GetWarningsForFontSubstitution : public IWarningCallback
{
public:
void Warning(WarningInfo& info) override
{
if (info.GetType() == ExceptionType::FontSubstitution)
{
std::cout << "WARNING INFO: " << info.GetDescription().ToUtf8() << std::endl;
}
}
static void Run()
{
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
Workbook workbook(srcDir + u"source.xlsx");
PdfSaveOptions options;
auto callback = std::make_shared<GetWarningsForFontSubstitution>();
options.SetWarningCallback(callback.get());
workbook.Save(outDir + u"output_out.pdf", options);
std::cout << "PDF saved successfully with font substitution warnings!" << std::endl;
}
};
int main()
{
Aspose::Cells::Startup();
GetWarningsForFontSubstitution::Run();
Aspose::Cells::Cleanup();
return 0;
}
输出
将源Excel文件转换为PDF后,警告将输出到调试控制台,例如:
WARNING INFO: Font substitution: Font [ Athene Logos; Regular ] has been substituted in Cell [ A6 ] in Sheet [ Sheet1 ].
WARNING INFO: Font substitution: Font [ B Traffic; Regular ] has been substituted in Cell [ A7 ] in Sheet [ Sheet1 ].
Workbook.CalculateFormula
方法。这样可以确保依赖公式的值被重新计算,并在PDF中显示正确的值。