Implement this interface if you want to receive notifications and control how Aspose.Words saves fonts when exporting a document to HTML format.
- Examples
Shows how to define custom logic for exporting fonts when saving to HTML.
void SaveExportedFonts()
{
auto doc = MakeObject<Document>(MyDir + u"Rendering.docx");
auto options = MakeObject<HtmlSaveOptions>();
options->set_ExportFontResources(true);
options->set_FontSavingCallback(MakeObject<ExHtmlSaveOptions::HandleFontSaving>());
doc->Save(ArtifactsDir + u"HtmlSaveOptions.SaveExportedFonts.html", options);
std::function<bool(String s)> endsWithTtf = [](String s)
{
return s.EndsWith(u".ttf");
};
{
std::cout << fontFilename << std::endl;
}
}
class HandleFontSaving : public IFontSavingCallback
{
private:
void FontSaving(SharedPtr<FontSavingArgs> args)
override
{
std::cout << "Font:\t" << args->get_FontFamilyName();
if (args->get_Bold())
{
std::cout << ", bold";
}
if (args->get_Italic())
{
std::cout << ", italic";
}
std::cout << "\nSource:\t" << args->get_OriginalFileName() << ", " << args->get_OriginalFileSize() << " bytes\n" << std::endl;
ASSERT_TRUE(args->get_Document()->get_OriginalFileName().EndsWith(u"Rendering.docx"));
ASSERT_TRUE(args->get_IsExportNeeded());
ASSERT_TRUE(args->get_IsSubsettingNeeded());
args->set_FontFileName(args->get_OriginalFileName().Split(MakeArray<char16_t>({System::IO::Path::DirectorySeparatorChar}))->LINQ_Last());
args->set_FontStream(MakeObject<System::IO::FileStream>(
ArtifactsDir + args->get_OriginalFileName().Split(MakeArray<char16_t>({System::IO::Path::DirectorySeparatorChar}))->LINQ_Last(),
System::IO::FileMode::Create));
ASSERT_FALSE(args->get_KeepFontStreamOpen());
}
};