获取在将Excel文件渲染为PDF时字体替换的警告信息

要在将Excel文件渲染为PDF时获取字体替换的警告信息,请实现IWarningCallback接口,并将PdfSaveOptions.WarningCallback属性设置为您的实现类。

下面的屏幕截图显示了我们将在以下代码中使用的源Excel文件。在单元格A6和A7中有一些文本,微软Excel无法正确呈现其中的字体。

并非所有字体都能正确呈现
todo:image_alt_text

Aspose.Cells将使用合适的字体替换单元格A6和A7中的字体,如下所示。

替换字体
todo:image_alt_text

下载源文件和输出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 ].