Skip to content

Repository files navigation

Note An UnRTF v0.19.3 binary is included as an optional dependency for Windows users via node-unrtf-win32. Due to its age, it has several issues, including the inability to convert RTF documents generated from 2007 onwards and a bug in the noPictures option that still generates pictures.

It is recommended that applications using the node-unrtf module run in a Linux environment with the latest available UnRTF binaries, which do not have these issues.

node-unrtf

GitHub release npm version CI Coverage status code style: Prettier OSSF Scorecard

Asynchronous Node.js wrapper for the UnRTF conversion utility

Overview

UnRTF is a command-line utility for manipulating RTF documents and extracting data from them, including converting RTF files to HTML or TXT.

The node-unrtf module provides an asynchronous Node.js wrapper around the UnRTF binary for easier use.

Installation

Install using npm:

npm i node-unrtf

Linux and macOS/Darwin support

For Linux and macOS users, the unrtf binary will need to be installed separately.

An example of downloading the binary on a Debian system:

sudo apt-get install unrtf

For macOS users, the binary can be installed with Homebrew:

brew install unrtf

Example usage

Please refer to the JSDoc comments in the source code or the generated type definitions for information on the available options.

Async/await

Example of an async/await call to unRtf.convert() to convert an RTF file to HTML using ESM syntax:

import { UnRTF } from "node-unrtf";

const file = "test_document.rtf";
const unRtf = new UnRTF();
const options = {
	outputHtml: true,
};

const res = await unRtf.convert(file, options);
console.log(res);

Promise chaining

Example of calling unRtf.convert() with a promise chain using CJS syntax:

"use strict";

const { UnRTF } = require("node-unrtf");

const file = "test_document.rtf";
const unRtf = new UnRTF("/usr/bin");
const options = {
	outputHtml: true,
};

unRtf
	.convert(file, options)
	.then((res) => {
		console.log(res);
		return res;
	})
	.catch((err) => {
		console.error(err);
		throw err;
	});

Removing images generated by UnRTF

As mentioned in the note block at the top of this README, the noPictures option does not remove images when used with UnRTF < v0.20.4 and will write them to the current working directory.

To remove images generated by UnRTF, it is recommended to use a globbing module such as glob in conjunction with the node:fs/promises module to find and remove them:

import { unlink } from "node:fs/promises";
import { UnRTF } from "node-unrtf";
import { glob } from "glob";

const file = "test/files/test-rtf-complex.rtf";
const unRtf = new UnRTF();
const options = {
	outputHtml: true,
	noPictures: true,
};

await unRtf.convert(file, options);

const files = await glob("*.{emf,wmf}");
await Promise.all(files.map((fileD) => unlink(fileD)));

Contributing

Contributions are welcome, and any help is greatly appreciated!

See the contributing guide for details on how to get started. Please adhere to this project's Code of Conduct when contributing.

License

node-unrtf is licensed under the MIT license.

About

Asynchronous Node.js wrapper for the UnRTF conversion utility

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

6 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages