com.aspose.words

Interface IWarningCallback

Implement this interface if you want to have your own custom method called to capture loss of fidelity warnings that can occur during document loading or saving.

Example:

Shows how to implement the IWarningCallback to be notified of any font substitution during document save.
public static class HandleDocumentWarnings implements IWarningCallback {
    /**
     * 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.
     */
    public void warning(final WarningInfo info) {
        // We are only interested in fonts being substituted
        if (info.getWarningType() == WarningType.FONT_SUBSTITUTION) {
            System.out.println("Font substitution: " + info.getDescription());
        }
    }

}

Example:

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

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

// We can choose the default font to use in the case of any missing fonts
FontSettings.getDefaultInstance().getSubstitutionSettings().getDefaultFontSubstitution().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 substituted with the default 
// font specified under FontSettings.DefaultFontName. We can pick up on this substitution using our callback
FontSettings.getDefaultInstance().setFontsFolder("", false);

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

Example:

Shows added fallback to bitmap rendering and changing type of warnings about unsupported metafile records.
Document doc = new Document(getMyDir() + "WMF with image.docx");

    MetafileRenderingOptions metafileRenderingOptions = new MetafileRenderingOptions();
    metafileRenderingOptions.setEmulateRasterOperations(false);
    metafileRenderingOptions.setRenderingMode(MetafileRenderingMode.VECTOR_WITH_FALLBACK);

    // If Aspose.Words cannot correctly render some of the metafile records to vector graphics then Aspose.Words renders this metafile to a bitmap
    HandleDocumentWarnings callback = new HandleDocumentWarnings();
    doc.setWarningCallback(callback);

    PdfSaveOptions saveOptions = new PdfSaveOptions();
    saveOptions.setMetafileRenderingOptions(metafileRenderingOptions);

    doc.save(getArtifactsDir() + "PdfSaveOptions.HandleBinaryRasterWarnings.pdf", saveOptions);

    Assert.assertEquals(callback.mWarnings.getCount(), 1);
    Assert.assertTrue(callback.mWarnings.get(0).getDescription().contains("R2_XORPEN"));
}

public static class HandleDocumentWarnings implements IWarningCallback {
    /**
     * 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.
     */
    public void warning(final WarningInfo info) {
        //For now type of warnings about unsupported metafile records changed from DataLoss/UnexpectedContent to MinorFormattingLoss
        if (info.getWarningType() == WarningType.MINOR_FORMATTING_LOSS) {
            System.out.println("Unsupported operation: " + info.getDescription());
            this.mWarnings.warning(info);
        }
    }

    public WarningInfoCollection mWarnings = new WarningInfoCollection();
}

Method Summary
abstract voidwarning(WarningInfo info)
Aspose.Words invokes this method when it encounters some issue during document loading or saving that might result in loss of formatting or data fidelity.
 

    • Method Detail

      • warning

        public abstract void warning(WarningInfo info)
        Aspose.Words invokes this method when it encounters some issue during document loading or saving that might result in loss of formatting or data fidelity.

        Example:

        Shows how to implement the IWarningCallback to be notified of any font substitution during document save.
        public static class HandleDocumentWarnings implements IWarningCallback {
            /**
             * 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.
             */
            public void warning(final WarningInfo info) {
                // We are only interested in fonts being substituted
                if (info.getWarningType() == WarningType.FONT_SUBSTITUTION) {
                    System.out.println("Font substitution: " + info.getDescription());
                }
            }
        
        }