DocumentBaseWarningCallback Property

Called during various document processing procedures when an issue is detected that might result in data or formatting fidelity loss.

Namespace:  Aspose.Words
Assembly:  Aspose.Words (in Aspose.Words.dll) Version: 20.3
public IWarningCallback WarningCallback { get; set; }

Property Value

Type: IWarningCallback
Document may generate warnings at any stage of its existence, so it's important to setup warning callback as early as possible to avoid the warnings loss. E.g. such properties as PageCount actually build the document layout which is used later for rendering, and the layout warnings may be lost if warning callback is specified just for the rendering calls later.
Shows how to implement the IWarningCallback to be notified of any font substitution during document save.
public class HandleDocumentWarnings : IWarningCallback
    /// <summary>
    /// Our callback only needs to implement the "Warning" method. This method is called whenever there is a
    /// potential issue during document processing. The callback can be set to listen for warnings generated during document
    /// load and/or document save.
    /// </summary>
    public void Warning(WarningInfo info)
        // We are only interested in fonts being substituted
        if (info.WarningType == WarningType.FontSubstitution)
            Console.WriteLine("Font substitution: " + info.Description);

Demonstrates how to receive notifications of font substitutions by using IWarningCallback.
// Load the document to render
Document doc = new Document(MyDir + "Document.docx");

// Create a new class implementing IWarningCallback and assign it to the PdfSaveOptions class
HandleDocumentWarnings callback = new HandleDocumentWarnings();
doc.WarningCallback = callback;

// We can choose the default font to use in the case of any missing fonts
FontSettings.DefaultInstance.SubstitutionSettings.DefaultFontSubstitution.DefaultFontName = "Arial";

// For testing we will set Aspose.Words to look for fonts only in a folder which doesn't exist. Since Aspose.Words won't
// find any fonts in the specified directory, then during rendering the fonts in the document will be substituted with the default 
// font specified under FontSettings.DefaultFontName. We can pick up on this substitution using our callback
FontSettings.DefaultInstance.SetFontsFolder(string.Empty, false);

// Pass the save options along with the save path to the save method
doc.Save(ArtifactsDir + "Font.SubstitutionNotification.pdf");
See Also