iarna / rtf-to-html

Convert RTF to HTML in pure JavaScript.
ISC License
64 stars 35 forks source link

Styles are not support in the html #14

Open JeyasriBaskaran opened 4 years ago

JeyasriBaskaran commented 4 years ago

I tried this package. In my RTF file adding Bold, Italic, Underline styles. But after converting to html. It display as a plain text only in the html.

Romick2005 commented 4 years ago

I think you are wrong. This library supports basic styling such as u, strong, etc html tags. Can you please provide small rtf text sample to verify this?

JeyasriBaskaran commented 4 years ago

This is my sample RTF Test: {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff43\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang16393\deflangfe16393\themelang16393\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{*\panose 02020603050405020304}Times New Roman;}{\f3\fbidi \froman\fcharset2\fprq2{*\panose 05050102010706020507}Symbol;} {\f24\fbidi \froman\fcharset0\fprq2{*\panose 00000400000000000000}Mangal;}{\f34\fbidi \froman\fcharset0\fprq2{*\panose 02040503050406030204}Cambria Math;} {\f43\fbidi \froman\fcharset0\fprq2{*\panose 00000000000000000000}Liberation Serif{*\falt Times New Roman};}{\f44\fbidi \froman\fcharset0\fprq2{*\panose 00000000000000000000}Liberation Sans{*\falt Arial};} {\f45\fbidi \froman\fcharset0\fprq2{*\panose 00000000000000000000}OpenSymbol{*\falt Arial Unicode MS};}{\f46\fbidi \froman\fcharset0\fprq2{*\panose 00000000000000000000}DejaVu Sans{*\falt Verdana};} {\flomajor\f31500\fbidi \froman\fcharset0\fprq2{*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{*\panose 02020603050405020304}Times New Roman;} {\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{*\panose 020f0302020204030204}Calibri Light;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{*\panose 02020603050405020304}Times New Roman;} {\flominor\f31504\fbidi \froman\fcharset0\fprq2{*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{*\panose 02020603050405020304}Times New Roman;} {\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{*\panose 02020603050405020304}Times New Roman;}{\f461\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\f462\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f464\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f465\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f466\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\f467\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f468\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f469\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f801\fbidi \froman\fcharset238\fprq2 Cambria Math CE;} {\f802\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f804\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f805\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f808\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;} {\f809\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} {\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} {\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;} {\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;} {\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;} {\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\…cked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; \lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; \lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; \lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; \lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; \lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; \lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link Error;}}{*\datastore 0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000 d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000b0c3 ee36eb75d601feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000105000000000000}}

This is my code: const rtfToHTML = require('@iarna/rtf-to-html') rtfToHTML.fromString(fileContent, (err, html) => { callback(html) })

Romick2005 commented 4 years ago

Hi seems like it is invalid or corrupted rtf. Are you able to see that content is some rtf viewer? Can you please provide rtf file? Also can you please try this:

const rtfToHTML = require('@iarna/rtf-to-html');
const rtfString = '{\\rtf1\\ansi\\deff0 hi \\b there\\b0  \\ul there \\ulnone\\i there\\i0\\par }';
rtfToHTML.fromString(
  rtfString,
  (err, html) => {
    if (err) {
      console.error("Error: ", err);
      return;
    }

    console.log(html);

    // Prints a document containing:
    // <p>hi <strong>there</strong> <u>there </u><em>there</em></p>
  }
);
JeyasriBaskaran commented 4 years ago

Hi, I tried this file

On Mon, Aug 24, 2020 at 3:23 PM Romick2005 notifications@github.com wrote:

Hi seems like it is invalid or corrupted rtf. Are you able to see that content is some rtf viewer? Can you please provide rtf file? Also can you please try this:

const rtfToHTML = require('@iarna/rtf-to-html'); const rtfString = '{\rtf1\ansi\deff0 hi \b there\b0 \ul there \ulnone\i there\i0\par }'; rtfToHTML.fromString( rtfString, (err, html) => { if (err) { console.error("Error: ", err); return; }

console.log(html);

// Prints a document containing:
// <p>hi <strong>there</strong> <u>there </u><em>there</em></p>

} );

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/iarna/rtf-to-html/issues/14#issuecomment-679094590, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQVNUAYVG73AK6QV6B6FUSDSCJLVTANCNFSM4QFYNMVA .

crisfranco1 commented 3 years ago

I have this examples and the conversion failed. :(

const rtfToHTML = require('@iarna/rtf-to-html')

const a = '{\rtf1\ansi\ansicpg1252\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fnil\fcharset0 Arial Black;}{\f2\fnil\fcharset0 Courier New;}{\f3\fnil\fcharset0 Georgia;}{\f4\fnil\fcharset0 Tahoma;}{\f5\fnil\fcharset0 Times New Roman;}{\f6\fnil\fcharset0 Verdana;}}{\colortbl ;}{\pard My\~html\~{\b content}\sb70\par}}';

const b = '{\rtf1\ansi\b hi there\b0}';

rtfToHTML.fromString(b, (err, html) => { console.log(html) // prints a document containing: // });

i got // "

empty

"

Romick2005 commented 3 years ago

Have you tried to check error inside callback function?

crisfranco1 commented 3 years ago

I got the next answer with a empty body

image