HTML to Text

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

HTML to Text

Сообщение RaFaeL »

Ищется код конвертации произвольного HTML (если конкретно то электронное письмо) в текст. На чистом кларионе, можно на С который кларион понимает, winapi можно. Без лишних dll и .net. На текущий момент используем jhtml, там можно это сделать несколько костыльной комбинацией методов, но класс весьма тяжелый и ему нужно окно с контролом html, соотв. ищу что-то более подходящее для фоновой массовой конвертации
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

HTML to Text

Сообщение Дед Пахом »

Наверно через OLE(Shell.Explorer.2) можно, вызвав txt = ?ole{'Document.body.innertext'}
С уважением, ДП
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

HTML to Text

Сообщение Дед Пахом »

Работает.
С уважением, ДП
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

HTML to Text

Сообщение RaFaeL »

А можно пример чуть больше чем 1 строку? Спасибо заранее
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

HTML to Text

Сообщение Дед Пахом »

Я проверял так:

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

?OLE1{'Navigate("'& 'file://'& CLIP(htmlfile) &'")'}
!-- тут надо вызвать что-то типа SLEEP, чтобы подождать, пока загрузится документ
MESSAGE(?OLE1{'Document.body.innertext'})
Можно вместо Navigate(file) загрузить содержимое файла, только не помню как.
С уважением, ДП
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

HTML to Text

Сообщение Дед Пахом »

Вот так можно: сначала (при входе в процедуру) инициализируем 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'})
С уважением, ДП
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

HTML to Text

Сообщение RaFaeL »

Упорно выдает GetPropertyFailed х.з. чего не хватает
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

HTML to Text

Сообщение Дед Пахом »

Ну не знаю, у меня GetPropertyFailed если Navigate не успел отработать.
С уважением, ДП
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

HTML to Text

Сообщение RaFaeL »

Так это выходит то же самое, что и jhtml делает, только без обертки. Ищется то другое
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

HTML to Text

Сообщение Дед Пахом »

понятно, 2 строчки много, хочется покороче :-)
С уважением, ДП
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

HTML to Text

Сообщение 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.
WBR, morkovin
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

HTML to Text

Сообщение RaFaeL »

Дед Пахом писал(а): 06 Январь 2019, 1:43понятно, 2 строчки много, хочется покороче
Не покороче, а чтобы работало без окон и т.п.
У меня не получилось заставить это все работать в фоне внутри процесса. На окошке в присутствии пользователя да, нормально работает, в фоне не хочет ничего грузить в объект
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

HTML to Text

Сообщение Игорь Столяров »

RaFaeL писал(а): 06 Январь 2019, 12:47в фоне не хочет ничего грузить в объект
Это в принципе интерфейсный объект.
Надо открыть пустое рабочее окно размером 1x1 и спрятать его Hide(Window).
А после выполнения - закрыть ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

HTML to Text

Сообщение RaFaeL »

Вот именно так и не удалось заставить работать. Если вывести простой stop() или открыть окно в accept цикл и крестиком сразу закрыть то работает, а пока хоть что-то не сделаешь руками - не грузит, хоть час жди там GetPropertyFailed. Вероятно, ожидается какое-то событие, но пока не удалось подобрать, что именно и куда надо послать. Да и вообще все это не решение, я по сути пишу службу, которая в фоне на сервере будет грузить электронную почту - не должно там никаких окон быть
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

HTML to Text

Сообщение RaFaeL »

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