Есть ли в GWT форматированный текст, отображающий данные типа RTF?

Я использую GWT Richtextbox, но этот виджет показывает значения, которые простой текст или формат HTML. Есть ли способ показать данные RTF в виджете GWT-Richtext или GWT-htmlEditor? Или в других библиотеках GWT есть виджет, который это сделает?


person Yusuf K.    schedule 18.01.2011    source источник


Ответы (3)


Я так не думаю. Около года назад мы хотели разработать rtf-браузер на стороне клиента, но у нас ничего не вышло. Библиотеки GWT-Rtf отсутствуют. Можно попробовать найти что-то написанное на javascript, а затем обернуть это JSNI, но такой библиотеки я тоже не встречал. Кто-то сказал мне, что это возможно с Activex, но мы даже не пробовали этот метод.

person kospiotr    schedule 18.01.2011

Чего вы пытаетесь достичь? Если вы хотите обмениваться документами с помощью редактора RTF, например, Microsoft Word, вам следует проверить, может ли этот редактор также работать с HTML. Я знаю, что MS Word может редактировать HTML.

В качестве альтернативы вы можете подумать о переносе RTF в HTML и обратно на стороне сервера. Для этого существует несколько библиотек Java, и я считаю, что Flying Saucer один из них.

person David    schedule 18.01.2011
comment
У меня есть данные RTF в базе данных, я покажу их в интернет-браузере, и пользователь будет их редактировать. Поэтому я конвертирую RTF в HTML и использую его. Но когда используется HTML, множественные пробелы игнорируются в РЕДАКТОРЕ. Таким образом, текстовый формат потерян, и пользователь не видит, какой тип был введен до сохранения. - person Yusuf K.; 18.01.2011
comment
Возможно, это просто вопрос замены обычных пробелов неразрывными пробелами (en.wikipedia.org/wiki /Non-breaking_space) в редакторе. Вы можете сделать это на лету, перехватывая нажатия клавиш с помощью KeyDownHandler (google-web-toolkit.googlecode.com/svn/javadoc/2.1/com/google/) - person David; 18.01.2011
comment
Спасибо, но проблема не в этом. Нет проблем при вводе пользователем, проблема возникает, когда сохраненные данные получаются из БД и помещаются в редактор. - person Yusuf K.; 19.01.2011

Вы можете использовать RTFEditorKit в сочетании с HTMLEditorKit для преобразования между двумя серверами или в апплете. Таким образом, вы можете использовать редактор форматированного текста GWT и выводить или вводить RTF.

public static String getHtmlFromRtf(InputStream fi){
    Writer sOut = new StringWriter();
    DefaultStyledDocument doc = new DefaultStyledDocument();                  
    HTMLEditorKit htmlKit = new HTMLEditorKit();                  
    RTFEditorKit rtf = new RTFEditorKit();

    try
    {
        rtf.read( fi, doc, 0 );
        htmlKit.write(sOut, doc, 0, doc.getLength());
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    catch (BadLocationException e)
    {
        e.printStackTrace();
    }
    return sOut.toString();
}
person LINEMAN78    schedule 19.01.2011
comment
Спасибо за ваш ответ, но проблема с этими методами заключается в нескольких пробелах. Редактор форматированного текста GWT игнорирует несколько пробелов. - person Yusuf K.; 19.01.2011
comment
изменить их в html. - person LINEMAN78; 19.01.2011
comment
Как видно, это не так просто, замените изменение метода ‹p style=sd› на ‹pstyle=sd›, это неприемлемо. Требуется интеллектуальный метод замены. - person Yusuf K.; 21.01.2011