CompatibilityOptions

CompatibilityOptions class

Contains compatibility options (that is, the user preferences entered on the Compatibility tab of the Options dialog in Microsoft Word).

To learn more, visit the Detect File Format and Check Format Compatibility documentation article.

public class CompatibilityOptions

Properties

NameDescription
AdjustLineHeightInTable { get; set; }Add Document Grid Line Pitch To Lines in Table Cells.
AlignTablesRowByRow { get; set; }Align Table Rows Independently.
AllowSpaceOfSameStyleInTable { get; set; }Allow Contextual Spacing of Paragraphs in Tables.
ApplyBreakingRules { get; set; }Use Legacy Ethiopic and Amharic Line Breaking Rules.
AutofitToFirstFixedWidthCell { get; set; }Allow Table Columns To Exceed Preferred Widths of Constituent Cells.
AutoSpaceLikeWord95 { get; set; }Emulate Word 95 Full-Width Character Spacing.
BalanceSingleByteDoubleByteWidth { get; set; }Balance Single Byte and Double Byte Characters.
CachedColBalance { get; set; }Use Cached Paragraph Information for Column Balancing.
ConvMailMergeEsc { get; set; }Treat Backslash Quotation Delimiter as Two Quotation Marks.
DisableOpenTypeFontFormattingFeatures { get; set; }Specifies to disable OpenType font formatting features.
DisplayHangulFixedWidth { get; set; }Always Use Fixed Width for Hangul Characters.
DoNotAutofitConstrainedTables { get; set; }Do Not AutoFit Tables To Fit Next To Wrapped Objects.
DoNotBreakConstrainedForcedTable { get; set; }Don’t Break Table Rows Around Floating Tables.
DoNotBreakWrappedTables { get; set; }Do Not Allow Floating Tables To Break Across Pages.
DoNotExpandShiftReturn { get; set; }Don’t Justify Lines Ending in Soft Line Break.
DoNotLeaveBackslashAlone { get; set; }Convert Backslash To Yen Sign When Entered.
DoNotSnapToGridInCell { get; set; }Do Not Snap to Document Grid in Table Cells with Objects.
DoNotSuppressIndentation { get; set; }Do Not Ignore Floating Objects When Calculating Paragraph Indentation.
DoNotSuppressParagraphBorders { get; set; }Do Not Suppress Paragraph Borders Next To Frames.
DoNotUseEastAsianBreakRules { get; set; }Do Not Compress Compressible Characters When Using Document Grid.
DoNotUseHTMLParagraphAutoSpacing { get; set; }Use Fixed Paragraph Spacing for HTML Auto Setting.
DoNotUseIndentAsNumberingTabStop { get; set; }Ignore Hanging Indent When Creating Tab Stop After Numbering.
DoNotVertAlignCellWithSp { get; set; }Don’t Vertically Align Cells Containing Floating Objects.
DoNotVertAlignInTxbx { get; set; }Ignore Vertical Alignment in Textboxes.
DoNotWrapTextWithPunct { get; set; }Do Not Allow Hanging Punctuation With Character Grid.
FootnoteLayoutLikeWW8 { get; set; }Emulate Word 6.x/95/97 Footnote Placement.
ForgetLastTabAlignment { get; set; }Ignore Width of Last Tab Stop When Aligning Paragraph If It Is Not Left Aligned.
GrowAutofit { get; set; }Allow Tables to AutoFit Into Page Margins.
LayoutRawTableWidth { get; set; }Ignore Space Before Table When Deciding If Table Should Wrap Floating Object.
LayoutTableRowsApart { get; set; }Allow Table Rows to Wrap Inline Objects Independently.
LineWrapLikeWord6 { get; set; }Emulate Word 6.0 Line Wrapping for East Asian Text.
MWSmallCaps { get; set; }Emulate Word 5.x for the Macintosh Small Caps Formatting.
NoColumnBalance { get; set; }Do Not Balance Text Columns within a Section.
NoExtraLineSpacing { get; set; }Do Not Center Content on Lines With Exact Line Height.
NoLeading { get; set; }Do Not Add Leading Between Lines of Text.
NoSpaceRaiseLower { get; set; }Do Not Increase Line Height for Raised/Lowered Text.
NoTabHangInd { get; set; }Do Not Create Custom Tab Stop for Hanging Indent.
OverrideTableStyleFontSizeAndJustification { get; set; }Specifies how the style hierarchy of the document is evaluated.
PrintBodyTextBeforeHeader { get; set; }Print Body Text before Header/Footer Contents.
PrintColBlack { get; set; }Print Colors as Black And White without Dithering.
SelectFldWithFirstOrLastChar { get; set; }Select Field When First or Last Character Is Selected.
ShapeLayoutLikeWW8 { get; set; }Emulate Word 97 Text Wrapping Around Floating Objects.
ShowBreaksInFrames { get; set; }Display Page/Column Breaks Present in Frames.
SpaceForUL { get; set; }Add Additional Space Below Baseline For Underlined East Asian Text.
SpacingInWholePoints { get; set; }Only Expand/Condense Text By Whole Points.
SplitPgBreakAndParaMark { get; set; }Always Move Paragraph Mark to Page after a Page Break.
SubFontBySize { get; set; }Increase Priority Of Font Size During Font Substitution.
SuppressBottomSpacing { get; set; }Ignore Exact Line Height for Last Line on Page.
SuppressSpacingAtTopOfPage { get; set; }Ignore Minimum Line Height for First Line on Page.
SuppressSpBfAfterPgBrk { get; set; }Do Not Use Space Before On First Line After a Page Break.
SuppressTopSpacing { get; set; }Ignore Minimum and Exact Line Height for First Line on Page.
SuppressTopSpacingWP { get; set; }Emulate WordPerfect 5.x Line Spacing.
SwapBordersFacingPgs { get; set; }Swap Paragraph Borders on Odd Numbered Pages.
SwapInsideAndOutsideForMirrorIndentsAndRelativePositioning { get; set; }Specifies to swap inside and outside for mirror indents and relative positioning.
TransparentMetafiles { get; set; }Specifies not to blank the area behind metafile pictures.
TruncateFontHeightsLikeWP6 { get; set; }Emulate WordPerfect 6.x Font Height Calculation.
UICompat97To2003 { get; set; }True to disable UI functionality which is not compatible with Word97-2003. Default value is false.
UlTrailSpace { get; set; }Underline All Trailing Spaces.
UnderlineTabInNumList { get; set; }Underline Following Character Following Numbering.
UseAltKinsokuLineBreakRules { get; set; }Use Alternate Set of East Asian Line Breaking Rules.
UseAnsiKerningPairs { get; set; }Use ANSI Kerning Pairs from Fonts.
UseFELayout { get; set; }Do Not Bypass East Asian/Complex Script Layout Code.
UseNormalStyleForList { get; set; }Do Not Automatically Apply List Paragraph Style To Bulleted/Numbered Text.
UsePrinterMetrics { get; set; }Use Printer Metrics To Display Documents.
UseSingleBorderforContiguousCells { get; set; }Use Simplified Rules For Table Border Conflicts.
UseWord2002TableStyleRules { get; set; }Emulate Word 2002 Table Style Rules.
UseWord2010TableStyleRules { get; set; }Specifies to use Word2010 table style rules.
UseWord97LineBreakRules { get; set; }Emulate Word 97 East Asian Line Breaking.
WPJustification { get; set; }Emulate WordPerfect 6.x Paragraph Justification.
WPSpaceWidth { get; set; }Specifies whether to set the width of a space as is done in WordPerfect 5.x.
WrapTrailSpaces { get; set; }Line Wrap Trailing Spaces.

Methods

NameDescription
OptimizeFor(MsWordVersion)Allows to optimize the document contents as well as default Aspose.Words behavior to a particular versions of MS Word.

Examples

Shows how to vertically align the text contents of a text box.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Shape shape = builder.InsertShape(ShapeType.TextBox, 200, 200);

// Set the "VerticalAnchor" property to "TextBoxAnchor.Top" to
// align the text in this text box with the top side of the shape.
// Set the "VerticalAnchor" property to "TextBoxAnchor.Middle" to
// align the text in this text box to the center of the shape.
// Set the "VerticalAnchor" property to "TextBoxAnchor.Bottom" to
// align the text in this text box to the bottom of the shape.
shape.TextBox.VerticalAnchor = verticalAnchor;

builder.MoveTo(shape.FirstParagraph);
builder.Write("Hello world!");

// The vertical aligning of text inside text boxes is available from Microsoft Word 2007 onwards.
doc.CompatibilityOptions.OptimizeFor(MsWordVersion.Word2007);
doc.Save(ArtifactsDir + "Shape.VerticalAnchor.docx");

Shows how to set an OOXML compliance specification for a saved document to adhere to.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// If we configure compatibility options to comply with Microsoft Word 2003,
// inserting an image will define its shape using VML.
doc.CompatibilityOptions.OptimizeFor(MsWordVersion.Word2003);
builder.InsertImage(ImageDir + "Transparent background logo.png");

Assert.AreEqual(ShapeMarkupLanguage.Vml, ((Shape)doc.GetChild(NodeType.Shape, 0, true)).MarkupLanguage);

// The "ISO/IEC 29500:2008" OOXML standard does not support VML shapes.
// If we set the "Compliance" property of the SaveOptions object to "OoxmlCompliance.Iso29500_2008_Strict",
// any document we save while passing this object will have to follow that standard. 
OoxmlSaveOptions saveOptions = new OoxmlSaveOptions
{
    Compliance = OoxmlCompliance.Iso29500_2008_Strict,
    SaveFormat = SaveFormat.Docx
};

doc.Save(ArtifactsDir + "OoxmlSaveOptions.Iso29500Strict.docx", saveOptions);

// Our saved document defines the shape using DML to adhere to the "ISO/IEC 29500:2008" OOXML standard.
doc = new Document(ArtifactsDir + "OoxmlSaveOptions.Iso29500Strict.docx");

Assert.AreEqual(ShapeMarkupLanguage.Dml, ((Shape)doc.GetChild(NodeType.Shape, 0, true)).MarkupLanguage);

Shows how to optimize the document for different versions of Microsoft Word.

public void OptimizeFor()
{
    Document doc = new Document();

    // This object contains an extensive list of flags unique to each document
    // that allow us to facilitate backward compatibility with older versions of Microsoft Word.
    CompatibilityOptions options = doc.CompatibilityOptions;

    // Print the default settings for a blank document.
    Console.WriteLine("\nDefault optimization settings:");
    PrintCompatibilityOptions(options);

    // We can access these settings in Microsoft Word via "File" -> "Options" -> "Advanced" -> "Compatibility options for...".
    doc.Save(ArtifactsDir + "CompatibilityOptions.OptimizeFor.DefaultSettings.docx");

    // We can use the OptimizeFor method to ensure optimal compatibility with a specific Microsoft Word version.
    doc.CompatibilityOptions.OptimizeFor(MsWordVersion.Word2010);
    Console.WriteLine("\nOptimized for Word 2010:");
    PrintCompatibilityOptions(options);

    doc.CompatibilityOptions.OptimizeFor(MsWordVersion.Word2000);
    Console.WriteLine("\nOptimized for Word 2000:");
    PrintCompatibilityOptions(options);
}

/// <summary>
/// Groups all flags in a document's compatibility options object by state, then prints each group.
/// </summary>
private static void PrintCompatibilityOptions(CompatibilityOptions options)
{
    for (int i = 1; i >= 0; i--)
    {
        Console.WriteLine(Convert.ToBoolean(i) ? "\tEnabled options:" : "\tDisabled options:");
        SortedSet<string> optionNames = new SortedSet<string>();

        foreach (System.ComponentModel.PropertyDescriptor descriptor in System.ComponentModel.TypeDescriptor.GetProperties(options))
        {
            if (descriptor.PropertyType == Type.GetType("System.Boolean") && i == Convert.ToInt32(descriptor.GetValue(options)))
            {
                optionNames.Add(descriptor.Name);
            }
        }

        foreach (string s in optionNames)
        {
            Console.WriteLine($"\t\t{s}");
        }
    }
}

See Also