Få varningar för fontersättning vid rendering av Excel fil med C++
För att få varningar för teckensubstitution när du renderar Excel-filer till PDF, implementera IWarningCallback
-gränssnittet och ställ in egenskapen PdfSaveOptions.WarningCallback
med ditt implementerade gränssnitt.
Skärmbilden nedan visar en käll-Excel-fil som vi kommer att använda i följande kod. Den har lite text i cellerna A6 och A7 med teckensnitt som inte renderas korrekt av Microsoft Excel.
Inte alla teckensnitt renderas korrekt |
---|
![]() |
Aspose.Cells kommer att ersätta teckensnitten i cellerna A6 och A7 med lämpliga teckensnitt, som visas nedan.
Ersatta teckensnitt |
---|
![]() |
Hämta källfilen och output-PDF
Du kan ladda ner den användarstyrda Excel-filen och den genererade PDF:en från följande länkar:
Kod
Följande kod implementerar IWarningCallback
och ställer in egenskapen PdfSaveOptions.WarningCallback
med den implementerade gränssnittet. Nu, när vilken teckensubstitution som helst sker i vilken cell som helst, kommer Aspose.Cells att utlösa en varning inuti WarningCallback.Warning()
-metoden.
#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;
}
Output
Efter att ha konverterat käll-Excel-filen till PDF kommer varningarna att skrivas ut till debuggkonsolen på detta sätt:
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
-metoden precis innan du renderar kalkylbladet till PDF-format. Detta säkerställer att de formelberoende värdena omräknas och att de rätta värdena visas i PDF:en.