Страница 1 из 1

HTML to Text

Добавлено: 05 Январь 2019, 19:25
RaFaeL
Ищется код конвертации произвольного HTML (если конкретно то электронное письмо) в текст. На чистом кларионе, можно на С который кларион понимает, winapi можно. Без лишних dll и .net. На текущий момент используем jhtml, там можно это сделать несколько костыльной комбинацией методов, но класс весьма тяжелый и ему нужно окно с контролом html, соотв. ищу что-то более подходящее для фоновой массовой конвертации

HTML to Text

Добавлено: 05 Январь 2019, 19:41
Дед Пахом
Наверно через OLE(Shell.Explorer.2) можно, вызвав txt = ?ole{'Document.body.innertext'}

HTML to Text

Добавлено: 05 Январь 2019, 20:39
Дед Пахом
Работает.

HTML to Text

Добавлено: 05 Январь 2019, 21:51
RaFaeL
А можно пример чуть больше чем 1 строку? Спасибо заранее

HTML to Text

Добавлено: 05 Январь 2019, 22:16
Дед Пахом
Я проверял так:

Код: Выделить всё

?OLE1{'Navigate("'& 'file://'& CLIP(htmlfile) &'")'}
!-- тут надо вызвать что-то типа SLEEP, чтобы подождать, пока загрузится документ
MESSAGE(?OLE1{'Document.body.innertext'})
Можно вместо Navigate(file) загрузить содержимое файла, только не помню как.

HTML to Text

Добавлено: 05 Январь 2019, 22:37
Дед Пахом
Вот так можно: сначала (при входе в процедуру) инициализируем DOM

Код: Выделить всё

?OLE1{'Navigate("about:blank")'}
затем в цикле загружаем html и сразу читаем текст

Код: Выделить всё

      ?OLE1{'Document.body.innerhtml'} = '<div spellcheck="true"><p>Dummy document.</p><textarea rows=4 cols=60>textarea with speling erors..</textarea></div>'
      MESSAGE(?OLE1{'Document.body.innertext'})

HTML to Text

Добавлено: 05 Январь 2019, 22:48
RaFaeL
Упорно выдает GetPropertyFailed х.з. чего не хватает

HTML to Text

Добавлено: 05 Январь 2019, 22:53
Дед Пахом
Ну не знаю, у меня GetPropertyFailed если Navigate не успел отработать.

HTML to Text

Добавлено: 05 Январь 2019, 23:21
RaFaeL
Так это выходит то же самое, что и jhtml делает, только без обертки. Ищется то другое

HTML to Text

Добавлено: 06 Январь 2019, 1:43
Дед Пахом
понятно, 2 строчки много, хочется покороче :-)

HTML to Text

Добавлено: 06 Январь 2019, 7:26
morkovin
Может это подойдёт? (StringTheory from CapeSoft)
RemoveHTML
RemoveHTML()
Description
Removes all HTML markup from the object, leaving just text behind.

Notes
Everything between <head> and </head>, between <style> and </style> and between <script> and </script> are removed.

Return Value
Returns nothing, The text in the object is changed.

HTML to Text

Добавлено: 06 Январь 2019, 12:47
RaFaeL
Дед Пахом писал(а): 06 Январь 2019, 1:43понятно, 2 строчки много, хочется покороче
Не покороче, а чтобы работало без окон и т.п.
У меня не получилось заставить это все работать в фоне внутри процесса. На окошке в присутствии пользователя да, нормально работает, в фоне не хочет ничего грузить в объект

HTML to Text

Добавлено: 06 Январь 2019, 12:53
Игорь Столяров
RaFaeL писал(а): 06 Январь 2019, 12:47в фоне не хочет ничего грузить в объект
Это в принципе интерфейсный объект.
Надо открыть пустое рабочее окно размером 1x1 и спрятать его Hide(Window).
А после выполнения - закрыть ...

HTML to Text

Добавлено: 06 Январь 2019, 13:48
RaFaeL
Вот именно так и не удалось заставить работать. Если вывести простой stop() или открыть окно в accept цикл и крестиком сразу закрыть то работает, а пока хоть что-то не сделаешь руками - не грузит, хоть час жди там GetPropertyFailed. Вероятно, ожидается какое-то событие, но пока не удалось подобрать, что именно и куда надо послать. Да и вообще все это не решение, я по сути пишу службу, которая в фоне на сервере будет грузить электронную почту - не должно там никаких окон быть

HTML to Text

Добавлено: 06 Январь 2019, 14:31
RaFaeL
morkovin писал(а): 06 Январь 2019, 7:26Может это подойдёт? (StringTheory from CapeSoft)
Посмотрел, спасибо!
Более-менее работает, но полная беда с переносами и служебными символами (кавычки и т.п.)
Может быть, попробую сам допилить до какого-то удобоваримого результата