powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / RTF to HTML
6 сообщений из 6, страница 1 из 1
RTF to HTML
    #39705989
terlalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть задача - из RichEdit получить строку в формате HTML
перерыл весь интернет и нашел таки способ
Но в нем есть 2 проблемы
1 - если убрать SaveDialog (комментирую 4 строки, как показано ниже) который мне не нужен, программа вылетает с ошибкой
и вторая менее актуальная проблема, не понятно почему оператор RichEdit1.CopyToClipboard выполняется около 30 секунд на моем i5 с 1 строкой в RichEdit ?

Так комментирую:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
//    SaveDialog2.FileName := '1.html';
  //  if SaveDialog2.Execute then begin
      s.Add('');
      wb.OleObject.document.selection.createRange().execCommand('Paste');
      s.Add(wb.OleObject.document.body.innerHTML);
      s.Add('');
    //  s.SaveToFile(SaveDialog2.FileName);
//    end;





Сам код:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
  s: TStringList;
  wb: TWebbrowser;
begin
  s := TStringList.Create;
  wb := TWebbrowser.Create(self);
  try
    wb.Navigate('about:blank');
    if RichEdit1.SelLength = 0 then
      RichEdit1.SelectAll;
    RichEdit1.CopyToClipboard;
    RichEdit1.SelLength := 0;
      SaveDialog2.FileName := '1.html';
     if SaveDialog2.Execute then begin
      s.Add('');
      wb.OleObject.document.selection.createRange().execCommand('Paste');
      s.Add(wb.OleObject.document.body.innerHTML);
      s.Add('');
      s.SaveToFile(SaveDialog2.FileName);
     end;
  finally
    s.Free;
    wb.Free;
  end;



Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
...
Рейтинг: 0 / 0
RTF to HTML
    #39706021
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть несколько способов решить твою задачу.
Правильный - найти или написать парсер/конвертер в RTF-HTML. Наверняка такие приблуды есть у всяких там TRichView и других подобных.
Менее правильный - использовать Word (или какой там ещё оффис бывает?) для конвертации. Т.е. загрузить RTF, сохранить как HTML. HTML получится говняным, но задача будет выполнена.
Ну и "другой" способ - использовать вот такой способ через клипборд (через попу). Если у тебя текста дофига, то вовремя копирования/вставки у пользователя могут произойти всякие неприятные события, например у пользователя может быть какой-нибудь софт для мониторинга клипборда, который заблокирует для анализа клипбоард на то мгновение, когда ты будешь вставлять браузер.
...
Рейтинг: 0 / 0
RTF to HTML
    #39706031
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А давно в IE можно RTF _вставлять_ ?
...
Рейтинг: 0 / 0
RTF to HTML
    #39706040
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HTML Editor Library умеет.
...
Рейтинг: 0 / 0
RTF to HTML
    #39706052
terlalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо воспользовался советом сделал через WORD - работает !
Думаю для моих нужд этого будет достаточно
Еще. вопрос, а как сохранить не в файл а просто присвоить переменной HTML код?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
var
vs_FileName, vi_wdFormatHTML : OleVariant;
begin
RichEdit1.SelectAll;
RichEdit1.CopyToClipboard;

// load the stringlist content into a word document
WordApplication1.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WordApplication1.ActiveDocument.Content.Paste;

// save as html
vs_FileName := 'c:\final.htm';
vi_wdFormatHTML := 8;
WordApplication1.ActiveDocument.SaveAs( vs_FileName, vi_wdFormatHTML, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordApplication1.ActiveDocument.Close(EmptyParam, EmptyParam, EmptyParam);
WordApplication1.Quit;



Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
...
Рейтинг: 0 / 0
RTF to HTML
    #39706893
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
terlalexСпасибо воспользовался советом сделал через WORD - работает !
Думаю для моих нужд этого будет достаточно
Еще. вопрос, а как сохранить не в файл а просто присвоить переменной HTML код?
Думаю, что в общем случае - никак. Просто загрузить сохранённый HTML файл в переменную, например через TStringList
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / RTF to HTML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]