@magzgtz/rtf-to-html
v1.1.0
Published
Convert RTF strings to HTML, preserving formatting, styles, and hyperlinks
Downloads
274
Maintainers
Readme
@magzgtz/rtf-to-html
A TypeScript library that converts RTF (Rich Text Format) strings into HTML, preserving text formatting, styles, and hyperlinks.
Features
- Bold, italic, underline, and strikethrough text
- Headings (
h1,h2) and paragraphs - Font families, font sizes, and text colors
- Text alignment and indentation
- Hyperlinks
- Superscript and subscript
- Inline CSS styles on all output elements
- Promise-based async API
Installation
npm install @magzgtz/rtf-to-htmlUsage
import { rtfToHtml } from "@magzgtz/rtf-to-html";
const rtf = String.raw`{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard This is {\b bold} and {\i italic} text.\par}`;
const html = await rtfToHtml(rtf);
console.log(html);Output
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<style>
.body { margin-left: 0pt; ... }
</style>
</head>
<body>
<p>
<span>This is </span><span><strong>bold</strong></span
><span> and </span><span><em>italic</em></span
><span> text.</span>
</p>
</body>
</html>API
rtfToHtml(rtf: string): Promise<string>
Converts an RTF string to an HTML document string.
| Parameter | Type | Description |
| --------- | -------- | ------------------ |
| rtf | string | A valid RTF string |
Returns: Promise<string> — a full HTML document as a string.
Throws: Rejects with an error if the RTF input is malformed or cannot be parsed.
Supported RTF Elements
| RTF Control | HTML Output |
| -------------------- | ----------------- |
| \b | <strong> |
| \i | <em> |
| \ul | <u> |
| \strike | <s> |
| \super | <sup> |
| \sub | <sub> |
| \par | <p> |
| Heading 1 style | <h1> |
| Heading 2 style | <h2> |
| \field (HYPERLINK) | <a href="..."> |
| Font, size, color | inline style="" |
Development
Prerequisites
- Node.js 18+
- npm
Setup
git clone https://github.com/magalyg/rtfToHtml.git
cd rtfToHtml
npm installRun the CLI demo
npm startYou will be prompted to paste an RTF string. The converted HTML is printed to stdout.
Build the library
npm run buildCompiled output lands in dist/.
License
ISC
