CompatibilityOptions class

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.

Properties

NameDescription
adjustLineHeightInTableAdd Document Grid Line Pitch To Lines in Table Cells.
alignTablesRowByRowAlign Table Rows Independently.
allowSpaceOfSameStyleInTableAllow Contextual Spacing of Paragraphs in Tables.
applyBreakingRulesUse Legacy Ethiopic and Amharic Line Breaking Rules.
autoSpaceLikeWord95Emulate Word 95 Full-Width Character Spacing.
autofitToFirstFixedWidthCellAllow Table Columns To Exceed Preferred Widths of Constituent Cells.
balanceSingleByteDoubleByteWidthBalance Single Byte and Double Byte Characters.
cachedColBalanceUse Cached Paragraph Information for Column Balancing.
convMailMergeEscTreat Backslash Quotation Delimiter as Two Quotation Marks.
disableOpenTypeFontFormattingFeaturesSpecifies to disable OpenType font formatting features.
displayHangulFixedWidthAlways Use Fixed Width for Hangul Characters.
doNotAutofitConstrainedTablesDo Not AutoFit Tables To Fit Next To Wrapped Objects.
doNotBreakConstrainedForcedTableDon’t Break Table Rows Around Floating Tables.
doNotBreakWrappedTablesDo Not Allow Floating Tables To Break Across Pages.
doNotExpandShiftReturnDon’t Justify Lines Ending in Soft Line Break.
doNotLeaveBackslashAloneConvert Backslash To Yen Sign When Entered.
doNotSnapToGridInCellDo Not Snap to Document Grid in Table Cells with Objects.
doNotSuppressIndentationDo Not Ignore Floating Objects When Calculating Paragraph Indentation.
doNotSuppressParagraphBordersDo Not Suppress Paragraph Borders Next To Frames.
doNotUseEastAsianBreakRulesDo Not Compress Compressible Characters When Using Document Grid.
doNotUseHTMLParagraphAutoSpacingUse Fixed Paragraph Spacing for HTML Auto Setting.
doNotUseIndentAsNumberingTabStopIgnore Hanging Indent When Creating Tab Stop After Numbering.
doNotVertAlignCellWithSpDon’t Vertically Align Cells Containing Floating Objects.
doNotVertAlignInTxbxIgnore Vertical Alignment in Textboxes.
doNotWrapTextWithPunctDo Not Allow Hanging Punctuation With Character Grid.
footnoteLayoutLikeWW8Emulate Word 6.x/95/97 Footnote Placement.
forgetLastTabAlignmentIgnore Width of Last Tab Stop When Aligning Paragraph If It Is Not Left Aligned.
growAutofitAllow Tables to AutoFit Into Page Margins.
layoutRawTableWidthIgnore Space Before Table When Deciding If Table Should Wrap Floating Object.
layoutTableRowsApartAllow Table Rows to Wrap Inline Objects Independently.
lineWrapLikeWord6Emulate Word 6.0 Line Wrapping for East Asian Text.
mwsmallCapsEmulate Word 5.x for the Macintosh Small Caps Formatting.
noColumnBalanceDo Not Balance Text Columns within a Section.
noExtraLineSpacingDo Not Center Content on Lines With Exact Line Height.
noLeadingDo Not Add Leading Between Lines of Text.
noSpaceRaiseLowerDo Not Increase Line Height for Raised/Lowered Text.
noTabHangIndDo Not Create Custom Tab Stop for Hanging Indent.
overrideTableStyleFontSizeAndJustificationSpecifies how the style hierarchy of the document is evaluated.
printBodyTextBeforeHeaderPrint Body Text before Header/Footer Contents.
printColBlackPrint Colors as Black And White without Dithering.
selectFldWithFirstOrLastCharSelect Field When First or Last Character Is Selected.
shapeLayoutLikeWW8Emulate Word 97 Text Wrapping Around Floating Objects.
showBreaksInFramesDisplay Page/Column Breaks Present in Frames.
spaceForULAdd Additional Space Below Baseline For Underlined East Asian Text.
spacingInWholePointsOnly Expand/Condense Text By Whole Points.
splitPgBreakAndParaMarkAlways Move Paragraph Mark to Page after a Page Break.
subFontBySizeIncrease Priority Of Font Size During Font Substitution.
suppressBottomSpacingIgnore Exact Line Height for Last Line on Page.
suppressSpBfAfterPgBrkDo Not Use Space Before On First Line After a Page Break.
suppressSpacingAtTopOfPageIgnore Minimum Line Height for First Line on Page.
suppressTopSpacingIgnore Minimum and Exact Line Height for First Line on Page.
suppressTopSpacingWPEmulate WordPerfect 5.x Line Spacing.
swapBordersFacingPgsSwap Paragraph Borders on Odd Numbered Pages.
swapInsideAndOutsideForMirrorIndentsAndRelativePositioningSpecifies to swap inside and outside for mirror indents and relative positioning.
transparentMetafilesSpecifies not to blank the area behind metafile pictures.
truncateFontHeightsLikeWP6Emulate WordPerfect 6.x Font Height Calculation.
uicompat97To2003True to disable UI functionality which is not compatible with Word97-2003. Default value is false.
ulTrailSpaceUnderline All Trailing Spaces.
underlineTabInNumListUnderline Following Character Following Numbering.
useAltKinsokuLineBreakRulesUse Alternate Set of East Asian Line Breaking Rules.
useAnsiKerningPairsUse ANSI Kerning Pairs from Fonts.
useFELayoutDo Not Bypass East Asian/Complex Script Layout Code.
useNormalStyleForListDo Not Automatically Apply List Paragraph Style To Bulleted/Numbered Text.
usePrinterMetricsUse Printer Metrics To Display Documents.
useSingleBorderforContiguousCellsUse Simplified Rules For Table Border Conflicts.
useWord2002TableStyleRulesEmulate Word 2002 Table Style Rules.
useWord2010TableStyleRulesSpecifies to use Word2010 table style rules.
useWord97LineBreakRulesEmulate Word 97 East Asian Line Breaking.
wpjustificationEmulate WordPerfect 6.x Paragraph Justification.
wpspaceWidthSpecifies whether to set the width of a space as is done in WordPerfect 5.x.
wrapTrailSpacesLine Wrap Trailing Spaces.

Methods

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

Examples

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

let doc = new aw.Document();
let builder = new aw.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(aw.Settings.MsWordVersion.Word2003);
builder.insertImage(base.imageDir + "Transparent background logo.png");

expect(doc.getShape(0, true).markupLanguage).toEqual(aw.Drawing.ShapeMarkupLanguage.Vml);

// 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. 
let saveOptions = new aw.Saving.OoxmlSaveOptions();
saveOptions.compliance = aw.Saving.OoxmlCompliance.Iso29500_2008_Strict;
saveOptions.saveFormat = aw.SaveFormat.Docx;

doc.save(base.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 aw.Document(base.artifactsDir + "OoxmlSaveOptions.Iso29500Strict.docx");

expect(doc.getShape(0, true).markupLanguage).toEqual(aw.Drawing.ShapeMarkupLanguage.Dml);

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

test('OptimizeFor', () => {
  let doc = new aw.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.
  let options = doc.compatibilityOptions;

  // Print the default settings for a blank document.
  console.log("\nDefault optimization settings:");
  printCompatibilityOptions(options);

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

  // We can use the OptimizeFor method to ensure optimal compatibility with a specific Microsoft Word version.
  doc.compatibilityOptions.optimizeFor(aw.Settings.MsWordVersion.Word2010);
  console.log("\nOptimized for Word 2010:");
  printCompatibilityOptions(options);

  doc.compatibilityOptions.optimizeFor(aw.Settings.MsWordVersion.Word2000);
  console.log("\nOptimized for Word 2000:");
  printCompatibilityOptions(options);
});


/// <summary>
/// Groups all flags in a document's compatibility options object by state, then prints each group.
/// </summary>
function printCompatibilityOptions(options) {
  let enabledOptions = [];
  let disabledOptions = [];
  addOptionName(options.adjustLineHeightInTable, "AdjustLineHeightInTable", enabledOptions, disabledOptions);
  addOptionName(options.alignTablesRowByRow, "AlignTablesRowByRow", enabledOptions, disabledOptions);
  addOptionName(options.allowSpaceOfSameStyleInTable, "AllowSpaceOfSameStyleInTable", enabledOptions, disabledOptions);
  addOptionName(options.applyBreakingRules, "ApplyBreakingRules", enabledOptions, disabledOptions);
  addOptionName(options.autoSpaceLikeWord95, "AutoSpaceLikeWord95", enabledOptions, disabledOptions);
  addOptionName(options.autofitToFirstFixedWidthCell, "AutofitToFirstFixedWidthCell", enabledOptions, disabledOptions);
  addOptionName(options.balanceSingleByteDoubleByteWidth, "BalanceSingleByteDoubleByteWidth", enabledOptions, disabledOptions);
  addOptionName(options.cachedColBalance, "CachedColBalance", enabledOptions, disabledOptions);
  addOptionName(options.convMailMergeEsc, "ConvMailMergeEsc", enabledOptions, disabledOptions);
  addOptionName(options.disableOpenTypeFontFormattingFeatures, "DisableOpenTypeFontFormattingFeatures", enabledOptions, disabledOptions);
  addOptionName(options.displayHangulFixedWidth, "DisplayHangulFixedWidth", enabledOptions, disabledOptions);
  addOptionName(options.doNotAutofitConstrainedTables, "DoNotAutofitConstrainedTables", enabledOptions, disabledOptions);
  addOptionName(options.doNotBreakConstrainedForcedTable, "DoNotBreakConstrainedForcedTable", enabledOptions, disabledOptions);
  addOptionName(options.doNotBreakWrappedTables, "DoNotBreakWrappedTables", enabledOptions, disabledOptions);
  addOptionName(options.doNotExpandShiftReturn, "DoNotExpandShiftReturn", enabledOptions, disabledOptions);
  addOptionName(options.doNotLeaveBackslashAlone, "DoNotLeaveBackslashAlone", enabledOptions, disabledOptions);
  addOptionName(options.doNotSnapToGridInCell, "DoNotSnapToGridInCell", enabledOptions, disabledOptions);
  addOptionName(options.doNotSuppressIndentation, "DoNotSnapToGridInCell", enabledOptions, disabledOptions);
  addOptionName(options.doNotSuppressParagraphBorders, "DoNotSuppressParagraphBorders", enabledOptions, disabledOptions);
  addOptionName(options.doNotUseEastAsianBreakRules, "DoNotUseEastAsianBreakRules", enabledOptions, disabledOptions);
  addOptionName(options.doNotUseHTMLParagraphAutoSpacing, "DoNotUseHTMLParagraphAutoSpacing", enabledOptions, disabledOptions);
  addOptionName(options.doNotUseIndentAsNumberingTabStop, "DoNotUseIndentAsNumberingTabStop", enabledOptions, disabledOptions);
  addOptionName(options.doNotVertAlignCellWithSp, "DoNotVertAlignCellWithSp", enabledOptions, disabledOptions);
  addOptionName(options.doNotVertAlignInTxbx, "DoNotVertAlignInTxbx", enabledOptions, disabledOptions);
  addOptionName(options.doNotWrapTextWithPunct, "DoNotWrapTextWithPunct", enabledOptions, disabledOptions);
  addOptionName(options.footnoteLayoutLikeWW8, "FootnoteLayoutLikeWW8", enabledOptions, disabledOptions);
  addOptionName(options.forgetLastTabAlignment, "ForgetLastTabAlignment", enabledOptions, disabledOptions);
  addOptionName(options.growAutofit, "GrowAutofit", enabledOptions, disabledOptions);
  addOptionName(options.layoutRawTableWidth, "LayoutRawTableWidth", enabledOptions, disabledOptions);
  addOptionName(options.layoutTableRowsApart, "LayoutTableRowsApart", enabledOptions, disabledOptions);
  addOptionName(options.lineWrapLikeWord6, "LineWrapLikeWord6", enabledOptions, disabledOptions);
  addOptionName(options.mWSmallCaps, "MWSmallCaps", enabledOptions, disabledOptions);
  addOptionName(options.noColumnBalance, "NoColumnBalance", enabledOptions, disabledOptions);
  addOptionName(options.noExtraLineSpacing, "NoExtraLineSpacing", enabledOptions, disabledOptions);
  addOptionName(options.noLeading, "NoLeading", enabledOptions, disabledOptions);
  addOptionName(options.noSpaceRaiseLower, "NoSpaceRaiseLower", enabledOptions, disabledOptions);
  addOptionName(options.noTabHangInd, "NoTabHangInd", enabledOptions, disabledOptions);
  addOptionName(options.overrideTableStyleFontSizeAndJustification, "OverrideTableStyleFontSizeAndJustification", enabledOptions, disabledOptions);
  addOptionName(options.printBodyTextBeforeHeader, "PrintBodyTextBeforeHeader", enabledOptions, disabledOptions);
  addOptionName(options.printColBlack, "PrintColBlack", enabledOptions, disabledOptions);
  addOptionName(options.selectFldWithFirstOrLastChar, "SelectFldWithFirstOrLastChar", enabledOptions, disabledOptions);
  addOptionName(options.shapeLayoutLikeWW8, "ShapeLayoutLikeWW8", enabledOptions, disabledOptions);
  addOptionName(options.showBreaksInFrames, "ShowBreaksInFrames", enabledOptions, disabledOptions);
  addOptionName(options.spaceForUL, "SpaceForUL", enabledOptions, disabledOptions);
  addOptionName(options.spacingInWholePoints, "SpacingInWholePoints", enabledOptions, disabledOptions);
  addOptionName(options.splitPgBreakAndParaMark, "SplitPgBreakAndParaMark", enabledOptions, disabledOptions);
  addOptionName(options.subFontBySize, "SubFontBySize", enabledOptions, disabledOptions);
  addOptionName(options.suppressBottomSpacing, "SuppressBottomSpacing", enabledOptions, disabledOptions);
  addOptionName(options.suppressSpBfAfterPgBrk, "SuppressSpBfAfterPgBrk", enabledOptions, disabledOptions);
  addOptionName(options.suppressSpacingAtTopOfPage, "SuppressSpacingAtTopOfPage", enabledOptions, disabledOptions);
  addOptionName(options.suppressTopSpacing, "SuppressTopSpacing", enabledOptions, disabledOptions);
  addOptionName(options.suppressTopSpacingWP, "SuppressTopSpacingWP", enabledOptions, disabledOptions);
  addOptionName(options.swapBordersFacingPgs, "SwapBordersFacingPgs", enabledOptions, disabledOptions);
  addOptionName(options.swapInsideAndOutsideForMirrorIndentsAndRelativePositioning, "SwapInsideAndOutsideForMirrorIndentsAndRelativePositioning", enabledOptions, disabledOptions);
  addOptionName(options.transparentMetafiles, "TransparentMetafiles", enabledOptions, disabledOptions);
  addOptionName(options.truncateFontHeightsLikeWP6, "TruncateFontHeightsLikeWP6", enabledOptions, disabledOptions);
  addOptionName(options.uICompat97To2003, "UICompat97To2003", enabledOptions, disabledOptions);
  addOptionName(options.ulTrailSpace, "UlTrailSpace", enabledOptions, disabledOptions);
  addOptionName(options.underlineTabInNumList, "UnderlineTabInNumList", enabledOptions, disabledOptions);
  addOptionName(options.useAltKinsokuLineBreakRules, "UseAltKinsokuLineBreakRules", enabledOptions, disabledOptions);
  addOptionName(options.useAnsiKerningPairs, "UseAnsiKerningPairs", enabledOptions, disabledOptions);
  addOptionName(options.useFELayout, "UseFELayout", enabledOptions, disabledOptions);
  addOptionName(options.useNormalStyleForList, "UseNormalStyleForList", enabledOptions, disabledOptions);
  addOptionName(options.usePrinterMetrics, "UsePrinterMetrics", enabledOptions, disabledOptions);
  addOptionName(options.useSingleBorderforContiguousCells, "UseSingleBorderforContiguousCells", enabledOptions, disabledOptions);
  addOptionName(options.useWord2002TableStyleRules, "UseWord2002TableStyleRules", enabledOptions, disabledOptions);
  addOptionName(options.useWord2010TableStyleRules, "UseWord2010TableStyleRules", enabledOptions, disabledOptions);
  addOptionName(options.useWord97LineBreakRules, "UseWord97LineBreakRules", enabledOptions, disabledOptions);
  addOptionName(options.wPJustification, "WPJustification", enabledOptions, disabledOptions);
  addOptionName(options.wPSpaceWidth, "WPSpaceWidth", enabledOptions, disabledOptions);
  addOptionName(options.wrapTrailSpaces, "WrapTrailSpaces", enabledOptions, disabledOptions);
  /*console.log("\tEnabled options:");
  for (let optionName of enabledOptions)
    console.log(`\t\t${optionName}`);
  console.log("\tDisabled options:");
  for (let optionName of disabledOptions)
    console.log(`\t\t${optionName}`);*/
}

function addOptionName(option, optionName, enabledOptions, disabledOptions)
{
  if (option)
    enabledOptions.push(optionName);
  else
    disabledOptions.push(optionName);
}

See Also