Content Import/Export in EJ2 TypeScript Rich Text Editor control

5 Mar 202515 minutes to read

Importing Content from Microsoft Word

The Rich Text Editor provides functionality to import content directly from Microsoft Word documents, preserving the original formatting and structure. This feature ensures a smooth transition of content from Word to the editor, maintaining elements such as headings, lists, tables, and text styles.

To integrate an ImportWord option into the Rich Text Editor toolbar, you can add it as a custom toolbar items using the items property in toolbarSettings.

The following example illustrates how to set up the ImportWord in the Rich Text Editor to facilitate content importation from Word documents:

import { RichTextEditor, Toolbar, Link, Image, HtmlEditor, QuickToolbar, Table, PasteCleanup, ImportExport } from '@syncfusion/ej2-richtexteditor';

RichTextEditor.Inject(Toolbar, Link, Image, HtmlEditor, QuickToolbar, Table, PasteCleanup, ImportExport);

const hostUrl: string = 'https://services.syncfusion.com/js/production/';
const importEditor: RichTextEditor = new RichTextEditor({
    value: ` <h2 style="text-align: center;">Invitation to Microsoft Webinar Meet-Up</h2>
    <p>
        Dear Guest,
    </p>
    <p>
        We're thrilled to extend a special invitation to you for an exclusive Microsoft webinar meet-up,
        where we'll explore the latest innovations and insights driving the future of technology. As a
        valued member of our community, we believe this event will offer invaluable knowledge and
        networking opportunities.
    </p>
    <h2>Event Details:</h2>
    <table class="e-rte-table" style="width: 100%; height: 125px;">
        <tbody>
            <tr style="height: 20%;">
                <th class="">Time:</th>
                <td>10:00 AM - 12:00 PM</td>
            </tr>
            <tr style="height: 20%;">
                <th>Duration:</th>
                <td>2 hours</td>
            </tr>
            <tr style="height: 20%;">
                <th>Platform:</th>
                <td>Microsoft Teams</td>
            </tr>
        </tbody>
    </table>
    <p><br></p>
    <h2>Agenda:</h2>
    <ul>
        <li>Introduction to Cutting-Edge Microsoft Technologies</li>
        <li>Deep Dive into AI in Business: Leveraging Microsoft Azure Solutions</li>
        <li>Live Q&amp;A Session with Industry Experts</li>
        <li>Networking Opportunities with Peers and Professionals</li>
    </ul>
    <h2>Why Attend?</h2>
    <ul>
        <li>Gain insights into the latest trends and advancements in technology.</li>
        <li>Interact with industry experts and expand your professional network.</li>
        <li>Get your questions answered in real-time during the live Q&amp;A session.</li>
        <li>Access exclusive resources and offers available only to webinar attendees.</li>
    </ul>
    <p>
        Feel free to invite your colleagues and peers who might benefit from this enriching experience.
        Simply forward this email to them or share the event details.
    </p>
    <p>
        We're looking forward to your participation and to exploring the exciting world of Microsoft
        technology together. Should you have any questions or require further information, please don't
        hesitate to contact us at <a href="mailto:webinar@company.com">webinar@company.com</a>.</p>
    <p>
        <br>
    </p>
    <p>Warm regards,</p>
    <p>John Doe<br>Event Coordinator<br>ABC Company</p>`,
    toolbarSettings: {
        items: ['ImportWord']
    },
    insertImageSettings: {
        saveUrl: hostUrl + 'api/RichTextEditor/SaveFile',
        removeUrl: hostUrl + 'api/RichTextEditor/DeleteFile',
        path: hostUrl + 'RichTextEditor/'
    },
    importWord: {
        serviceUrl: hostUrl + 'api/RichTextEditor/ImportFromWord',
    },
    enableXhtml: true,
});
importEditor.appendTo('#importEditor');
<!DOCTYPE html>
<html lang="en">

<head>
    <title>Essential JS 2 Rich Text Editor</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="Typescript UI Controls" />
    <meta name="author" content="Syncfusion" />
    <link href="index.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-base/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-richtexteditor/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-inputs/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-lists/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-navigations/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-popups/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-buttons/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-splitbuttons/styles/material.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
    <script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>

<body>
    <div id='loader'>Loading....</div>
    <div id="container">
        <div class="control-section">
            <div class="sample-container">
                <div class="default-section">
                    <div id="importEditor"></div>
                </div>
            </div>
        </div>
    </div>
</body>

</html>

Exporting Content to PDF and Microsoft Word

The Rich Text Editor’s export functionality allows users to convert their edited content into PDF or Word documents with a single click, preserving all text styles, images, tables, and other formatting elements.

You can add ExportWord and ExportPdf tools to the Rich Text Editor toolbar using the toolbarSettings items property.

The following example demonstrates how to configure the ExportWord and ExportPdf tools in the Rich Text Editor, facilitating the export of content into Word or PDF documents:

import { RichTextEditor, Toolbar, Link, Image, HtmlEditor, QuickToolbar, Table, PasteCleanup, ImportExport } from '@syncfusion/ej2-richtexteditor';
RichTextEditor.Inject(Toolbar, Link, Image, HtmlEditor, QuickToolbar, Table, PasteCleanup, ImportExport);

const hostUrl: string = 'https://services.syncfusion.com/js/production/';
const exportEditor: RichTextEditor = new RichTextEditor({
    value: ` <h2 style="text-align: center;">Invitation to Microsoft Webinar Meet-Up</h2>
    <p>
        Dear Guest,
    </p>
    <p>
        We're thrilled to extend a special invitation to you for an exclusive Microsoft webinar meet-up,
        where we'll explore the latest innovations and insights driving the future of technology. As a
        valued member of our community, we believe this event will offer invaluable knowledge and
        networking opportunities.
    </p>
    <h2>Event Details:</h2>
    <table class="e-rte-table" style="width: 100%; height: 125px;">
        <tbody>
            <tr style="height: 20%;">
                <th class="">Time:</th>
                <td>10:00 AM - 12:00 PM</td>
            </tr>
            <tr style="height: 20%;">
                <th>Duration:</th>
                <td>2 hours</td>
            </tr>
            <tr style="height: 20%;">
                <th>Platform:</th>
                <td>Microsoft Teams</td>
            </tr>
        </tbody>
    </table>
    <p><br></p>
    <h2>Agenda:</h2>
    <ul>
        <li>Introduction to Cutting-Edge Microsoft Technologies</li>
        <li>Deep Dive into AI in Business: Leveraging Microsoft Azure Solutions</li>
        <li>Live Q&amp;A Session with Industry Experts</li>
        <li>Networking Opportunities with Peers and Professionals</li>
    </ul>
    <h2>Why Attend?</h2>
    <ul>
        <li>Gain insights into the latest trends and advancements in technology.</li>
        <li>Interact with industry experts and expand your professional network.</li>
        <li>Get your questions answered in real-time during the live Q&amp;A session.</li>
        <li>Access exclusive resources and offers available only to webinar attendees.</li>
    </ul>
    <p>
        Feel free to invite your colleagues and peers who might benefit from this enriching experience.
        Simply forward this email to them or share the event details.
    </p>
    <p>
        We're looking forward to your participation and to exploring the exciting world of Microsoft
        technology together. Should you have any questions or require further information, please don't
        hesitate to contact us at <a href="mailto:webinar@company.com">webinar@company.com</a>.</p>
    <p>
        <br>
    </p>
    <p>Warm regards,</p>
    <p>John Doe<br>Event Coordinator<br>ABC Company</p>`,
    toolbarSettings: {
        items: ['ExportWord', 'ExportPdf']
    },
    insertImageSettings: {
        saveUrl: hostUrl + 'api/RichTextEditor/SaveFile',
        removeUrl: hostUrl + 'api/RichTextEditor/DeleteFile',
        path: hostUrl + 'RichTextEditor/'
    },
    exportWord: {
        serviceUrl: hostUrl + 'api/RichTextEditor/ExportToDocx',
        fileName: 'RichTextEditor.docx',
        stylesheet: `
        .e-rte-content {
            font-size: 1em;
            font-weight: 400;
            margin: 0;
        }
    `
    },
    exportPdf: {
        serviceUrl: hostUrl + 'api/RichTextEditor/ExportToPdf',
        fileName: 'RichTextEditor.pdf',
        stylesheet: `
        .e-rte-content{
            font-size: 1em;
            font-weight: 400;
            margin: 0;
        }
    `
    },
    enableXhtml: true,
});
exportEditor.appendTo('#exportEditor');
<!DOCTYPE html>
<html lang="en">

<head>
    <title>Essential JS 2 Rich Text Editor</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="Typescript UI Controls" />
    <meta name="author" content="Syncfusion" />
    <link href="index.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-base/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-richtexteditor/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-inputs/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-lists/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-navigations/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-popups/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-buttons/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-splitbuttons/styles/material.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
    <script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>

<body>
    <div id='loader'>Loading....</div>
    <div id="container">
        <div class="control-section">
            <div class="sample-container">
                <div class="default-section">
                    <div id="exportEditor"></div>
                </div>
            </div>
        </div>
    </div>
</body>

</html>

To create Rich Text Editor with ImportExport feature, inject the ImportExport module to the Rich Text Editor using the RichTextEditor.Inject(ImportExport) method.