Skip to content

Word

This documents the Word module and how to use it from JavaScript flows.

Requires Manatee v2.0 or greater

This version of the Html module cannot be used with Manatee v1.29 or earlier.

You can load the module using the following code:

js
var c = Module.load("Word", {version: "X.Y.Z"});

Open and inspect a document

To parse and inspect a document, use the open method:

js
var doc = c.open("path/to/document.docx");

If you need to edit the document, you can use the open method with the editable: true option:

js
var doc = c.open("path/to/document.docx", {editable: true});

Remember to close() all documents you’ve opened

If you don’t you wont be able to access the document until Manatee is restarted.

The returned doc is a document-object-model of a sorts of the document in question. You can use it to retrieve all paragraphs, tables, lists, etc. in the document.

Each node in the inspect() output has a type property that indicates the type of node. The following types are supported:

  • document: the root node of the document
  • paragraph: a paragraph
  • table: a table
  • list: a list
  • listitem: an item in a list
  • text: a text node

In addition you can invoke the toHtml() method on each node to get a simplified HTML representation of the node.

Closing a document

When you are done with a document, you must close it using the close method:

js
doc.close();

Always close all documents opened.

Edit a document

You can replace text in a document using the replace method:

js
doc.replace("find", "replace");

Remember to open the document with the editable: true option

If you don’t, the replace method will throw an error.

js
var doc = c.open("path/to/document.docx", { editable: true });

You can also replace text using a regular expression:

js
doc.replace(/find/g, "replace");

or use a function to replace text:

js
doc.replace(/find/g, function (match) {
    return match.toUpperCase();
});

You can also supply a map of values to be replaced:

js
doc.replace({
    "find1": "replace1",
    "find2": "replace2"
});

WARNING

The replace will modify the file in-place so if you need the original file, make a copy before opening it:

js
Fs.cp("path/to/document.docx", "path/to/document.docx.bak");
var doc = c.open("path/to/document.docx", { editable: true });
...

In addition to the replace function you can also modify text more directly.

Each text node has a text property that you can use to get or set the text of the node:

js
var doc = c.open("path/to/document.docx");
var t = doc.Children[0]; // here we assume the first node is a text node
t.text = "Hello World";

// NB: You need to explictly save the document (save will also close it)
doc.save();