or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

advanced-layout.mdcontent-elements.mddocument-creation.mddocument-export.mddocument-patching.mdindex.mdstyling-formatting.mdutility-functions.md
tile.json

document-creation.mddocs/

Document Creation

Core document creation functionality including sections, properties, and metadata management for creating new Word documents.

Capabilities

Document Class

The main class representing a Word document with all its content and configuration.

/**
 * Main class representing a Word document
 * @param options - Configuration options for the document
 */
class Document {
  constructor(options: IPropertiesOptions);
  
  // Properties for accessing document components
  readonly Document: DocumentWrapper;
  readonly Styles: Styles;
  readonly CoreProperties: CoreProperties;
  readonly Numbering: Numbering;
  readonly Media: Media;
  readonly FileRelationships: Relationships;
  readonly Headers: readonly HeaderWrapper[];
  readonly Footers: readonly FooterWrapper[];
  readonly ContentTypes: ContentTypes;
  readonly CustomProperties: CustomProperties;
  readonly AppProperties: AppProperties;
  readonly FootNotes: FootnotesWrapper;
  readonly Settings: Settings;
  readonly Comments: Comments;
  readonly FontTable: FontWrapper;
}

Usage Example:

import { Document } from "docx";

const doc = new Document({
  sections: [{
    properties: {},
    children: [
      new Paragraph("Hello World")
    ]
  }],
  title: "My Document",
  creator: "John Doe",
  description: "A sample document"
});

Document Options Interface

Configuration options for creating a new document.

/**
 * Configuration options for creating a Document
 */
interface IPropertiesOptions {
  /** Document sections containing content and layout */
  readonly sections: readonly ISectionOptions[];
  /** Document title metadata */
  readonly title?: string;
  /** Document subject metadata */
  readonly subject?: string;
  /** Document creator/author metadata */
  readonly creator?: string;
  /** Document keywords for search */
  readonly keywords?: string;
  /** Document description */
  readonly description?: string;
  /** Last modified by user */
  readonly lastModifiedBy?: string;
  /** Document revision number */
  readonly revision?: number;
  /** External styles XML content */
  readonly externalStyles?: string;
  /** Document styles configuration */
  readonly styles?: IStylesOptions;
  /** Numbering configuration */
  readonly numbering?: INumberingOptions;
  /** Comments configuration */
  readonly comments?: ICommentsOptions;
  /** Footnotes definitions */
  readonly footnotes?: Record<string, { readonly children: readonly Paragraph[] }>;
  /** Document background configuration */
  readonly background?: IDocumentBackgroundOptions;
  /** Document features configuration */
  readonly features?: {
    readonly trackRevisions?: boolean;
    readonly updateFields?: boolean;
  };
  /** Compatibility mode version */
  readonly compatabilityModeVersion?: number;
  /** Compatibility options */
  readonly compatibility?: ICompatibilityOptions;
  /** Custom document properties */
  readonly customProperties?: readonly ICustomPropertyOptions[];
  /** Enable different headers/footers for even/odd pages */
  readonly evenAndOddHeaderAndFooters?: boolean;
  /** Default tab stop distance */
  readonly defaultTabStop?: number;
  /** Font definitions */
  readonly fonts?: readonly FontOptions[];
  /** Hyphenation settings */
  readonly hyphenation?: IHyphenationOptions;
}

Section Options Interface

Configuration for document sections containing headers, footers, and content.

/**
 * Options for document sections
 */
interface ISectionOptions {
  /** Section headers for different page types */
  readonly headers?: {
    readonly default?: Header;
    readonly first?: Header;
    readonly even?: Header;
  };
  /** Section footers for different page types */
  readonly footers?: {
    readonly default?: Footer;
    readonly first?: Footer;
    readonly even?: Footer;
  };
  /** Section properties (margins, orientation, etc.) */
  readonly properties?: ISectionPropertiesOptions;
  /** Content elements in this section */
  readonly children: readonly FileChild[];
}

Usage Example:

const doc = new Document({
  sections: [
    {
      properties: {
        page: {
          margin: {
            top: 720,    // 0.5 inches in twips
            right: 720,
            bottom: 720,
            left: 720,
          },
        },
      },
      headers: {
        default: new Header({
          children: [new Paragraph("Document Header")],
        }),
      },
      children: [
        new Paragraph("Section content goes here"),
        new Table({
          rows: [
            new TableRow({
              children: [
                new TableCell({
                  children: [new Paragraph("Cell content")],
                }),
              ],
            }),
          ],
        }),
      ],
    },
  ],
});

Header and Footer Classes

Document header and footer elements for consistent page layout.

/**
 * Document header element
 */
class Header {
  constructor(options: IHeaderOptions);
}

/**
 * Document footer element
 */
class Footer {
  constructor(options: IFooterOptions);
}

/**
 * Options for header configuration
 */
interface IHeaderOptions {
  readonly children: readonly Paragraph[];
}

/**
 * Options for footer configuration
 */
interface IFooterOptions {
  readonly children: readonly Paragraph[];
}

Document Background Options

Configuration for document background styling.

/**
 * Document background configuration
 */
interface IDocumentBackgroundOptions {
  readonly color?: string;
}

Custom Properties Options

Configuration for custom document properties and metadata.

/**
 * Custom document property configuration
 */
interface ICustomPropertyOptions {
  readonly name: string;
  readonly value: string | number | boolean | Date;
}

Usage Example:

const doc = new Document({
  sections: [{ children: [...] }],
  customProperties: [
    { name: "Department", value: "Engineering" },
    { name: "Project", value: "Documentation System" },
    { name: "Version", value: 1.0 },
    { name: "Created", value: new Date() },
    { name: "Published", value: true },
  ],
});