better docx
Usage

Document

The Document object is the starting point of your .docx journey, this is the literal Word Document. You add all your content such as Paragraphs to this Document, and at the end export it however you like.

To create a new document, it is very easy:

const doc = new docx.Document();

Document properties

You can add properties to the Word document by specifying options, for example:

const doc = new docx.Document({
    creator: "Dolan Miu",
    description: "My extremely interesting document",
    title: "My Document",
});

Full list of options:

PropertyTypeNotes
sectionsISectionOptions[]Optional
titlestringOptional
subjectstringOptional
creatorstringOptional
keywordsstringOptional
descriptionstringOptional
lastModifiedBystringOptional
revisionnumberOptional
externalStylesstringOptional
stylesIStylesOptionsOptional
numberingINumberingOptionsOptional
commentsICommentsOptionsOptional
footnotesRecord<string, { children: Paragraph[] }>Optional
backgroundIDocumentBackgroundOptionsOptional
features{ trackRevisions?: boolean; updateFields?: boolean; }Optional
compatabilityModeVersionnumberOptional
compatibilityICompatibilityOptionsOptional
customProperties ICustomPropertyOptions[]Optional
evenAndOddHeaderAndFootersbooleanOptional
defaultTabStopnumberOptional
fonts FontOptions[]Optional
hyphenationIHyphenationOptionsOptional

Change background color of Document

Set the hex value in the document like so:

const doc = new docx.Document({
    background: {
        color: "C45911",
    },
});

You can mix and match whatever properties you want, or provide no properties.

Units for positioning

Various parts of the API require positioning arguments. The units are "20ths of a point" from the OOXML specification. See Lars Corneliussen's blog post for more information and how to convert units.

Compatibility

Compatibility Settings are optional settings used to preserve visual fidelity of documents created in earlier word processing applications. Some of these settings provide ability for specific behaviors, described in detail below; and others simply instruct applications to mimic the behavior of an existing word processing application.

const doc = new docx.Document({
    compatibility: {
        version: 15,
        doNotExpandShiftReturn: true,
    },
});

Compatibility Options

PropertyTypeNotesPossible Values
versionnumberOptional15, 16, 17
useSingleBorderforContiguousCellsbooleanOptionaltrue, false, undefined
wordPerfectJustificationbooleanOptionaltrue, false, undefined
noTabStopForHangingIndentbooleanOptionaltrue, false, undefined
noLeadingbooleanOptionaltrue, false, undefined
spaceForUnderlinebooleanOptionaltrue, false, undefined
noColumnBalancebooleanOptionaltrue, false, undefined
balanceSingleByteDoubleByteWidthbooleanOptionaltrue, false, undefined
noExtraLineSpacingbooleanOptionaltrue, false, undefined
doNotLeaveBackslashAlonebooleanOptionaltrue, false, undefined
underlineTrailingSpacesbooleanOptionaltrue, false, undefined
doNotExpandShiftReturnbooleanOptionaltrue, false, undefined
spacingInWholePointsbooleanOptionaltrue, false, undefined
lineWrapLikeWord6booleanOptionaltrue, false, undefined
printBodyTextBeforeHeaderbooleanOptionaltrue, false, undefined
printColorsBlackbooleanOptionaltrue, false, undefined
spaceWidthbooleanOptionaltrue, false, undefined
showBreaksInFramesbooleanOptionaltrue, false, undefined
subFontBySizebooleanOptionaltrue, false, undefined
suppressBottomSpacingbooleanOptionaltrue, false, undefined
suppressTopSpacingbooleanOptionaltrue, false, undefined
suppressSpacingAtTopOfPagebooleanOptionaltrue, false, undefined
suppressTopSpacingWPbooleanOptionaltrue, false, undefined
suppressSpBfAfterPgBrkbooleanOptionaltrue, false, undefined
swapBordersFacingPagesbooleanOptionaltrue, false, undefined
convertMailMergeEscbooleanOptionaltrue, false, undefined
truncateFontHeightsLikeWP6booleanOptionaltrue, false, undefined
macWordSmallCapsbooleanOptionaltrue, false, undefined
usePrinterMetricsbooleanOptionaltrue, false, undefined
doNotSuppressParagraphBordersbooleanOptionaltrue, false, undefined
wrapTrailSpacesbooleanOptionaltrue, false, undefined
footnoteLayoutLikeWW8booleanOptionaltrue, false, undefined
shapeLayoutLikeWW8booleanOptionaltrue, false, undefined
alignTablesRowByRowbooleanOptionaltrue, false, undefined
forgetLastTabAlignmentbooleanOptionaltrue, false, undefined
adjustLineHeightInTablebooleanOptionaltrue, false, undefined
autoSpaceLikeWord95booleanOptionaltrue, false, undefined
noSpaceRaiseLowerbooleanOptionaltrue, false, undefined
doNotUseHTMLParagraphAutoSpacingbooleanOptionaltrue, false, undefined
layoutRawTableWidthbooleanOptionaltrue, false, undefined
layoutTableRowsApartbooleanOptionaltrue, false, undefined
useWord97LineBreakRulesbooleanOptionaltrue, false, undefined
doNotBreakWrappedTablesbooleanOptionaltrue, false, undefined
doNotSnapToGridInCellbooleanOptionaltrue, false, undefined
selectFieldWithFirstOrLastCharacterbooleanOptionaltrue, false, undefined
applyBreakingRulesbooleanOptionaltrue, false, undefined
doNotWrapTextWithPunctuationbooleanOptionaltrue, false, undefined
doNotUseEastAsianBreakRulesbooleanOptionaltrue, false, undefined
useWord2002TableStyleRulesbooleanOptionaltrue, false, undefined
growAutofitbooleanOptionaltrue, false, undefined
useFELayoutbooleanOptionaltrue, false, undefined
useNormalStyleForListbooleanOptionaltrue, false, undefined
doNotUseIndentAsNumberingTabStopbooleanOptionaltrue, false, undefined
useAlternateEastAsianLineBreakRulesbooleanOptionaltrue, false, undefined
allowSpaceOfSameStyleInTablebooleanOptionaltrue, false, undefined
doNotSuppressIndentationbooleanOptionaltrue, false, undefined
doNotAutofitConstrainedTablesbooleanOptionaltrue, false, undefined
autofitToFirstFixedWidthCellbooleanOptionaltrue, false, undefined
underlineTabInNumberingListbooleanOptionaltrue, false, undefined
displayHangulFixedWidthbooleanOptionaltrue, false, undefined
splitPgBreakAndParaMarkbooleanOptionaltrue, false, undefined
doNotVerticallyAlignCellWithSpbooleanOptionaltrue, false, undefined
doNotBreakConstrainedForcedTablebooleanOptionaltrue, false, undefined
ignoreVerticalAlignmentInTextboxesbooleanOptionaltrue, false, undefined
useAnsiKerningPairsbooleanOptionaltrue, false, undefined
cachedColumnBalancebooleanOptionaltrue, false, undefined

On this page