package com.aspose.words.examples.rendering_printing; import com.aspose.words.Document; import com.aspose.words.FontSettings; import com.aspose.words.PdfSaveOptions; import com.aspose.words.examples.Utils; public class ReceiveNotificationOfMissingFontsAndFontSubstitution { private static final String dataDir = Utils.getSharedDataDir(ReceiveNotificationOfMissingFontsAndFontSubstitution.class) + "RenderingAndPrinting/"; public static void main(String[] args) throws Exception { // Load the document to render. Document doc = new Document(dataDir + "Rendering.doc"); // We can choose the default font to use in the case of any missing fonts. FontSettings.getDefaultInstance().setDefaultFontName("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 subsuited with the default // font specified under FontSettings.DefaultFontName. We can pick up on this subsuition using our callback. FontSettings.getDefaultInstance().setFontsFolder("", false); // Create a new class implementing IWarningCallback which collect any warnings produced during document save. HandleDocumentWarnings callback = new HandleDocumentWarnings(); doc.setWarningCallback(callback); // Pass the save options along with the save path to the save method. doc.save(dataDir + "Rendering.MissingFontNotification Out.pdf"); getNotificationBeforeSaving(doc); } public static void getNotificationBeforeSaving(Document doc) throws Exception { doc.updatePageLayout(); // Create a new class implementing IWarningCallback and assign it to the PdfSaveOptions class. HandleDocumentWarnings callback = new HandleDocumentWarnings(); PdfSaveOptions saveOptions = new PdfSaveOptions(); doc.setWarningCallback(callback); // Even though the document was rendered previously, any save warnings are notified to the user during document save. doc.save(dataDir + "Rendering.FontsNotificationUpdatePageLayout Out.pdf"); } }