Получить предупреждения о заменах шрифтов при рендеринге файла Excel в C++
Для получения предупреждений о замещениях шрифтов при преобразовании Excel в PDF реализуйте интерфейс IWarningCallback
и установите свойство PdfSaveOptions.WarningCallback
вашим реализованным интерфейсом.
Скриншот ниже показывает исходный файл Excel, который мы будем использовать в следующем коде. В нем есть текст в ячейках A6 и A7 шрифтом, который неправильно отображается в Microsoft 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. Это обеспечит пересчет значений, зависящих от формул, и правильное отображение значений в PDF.